【发布时间】:2012-08-08 16:33:44
【问题描述】:
好的,我不太清楚如何问这个问题,但基本上我想创建一个自定义集合类,允许我在通用列表 (Of T) 上拥有属性,例如:
Public ReadOnly Property TotalCalories() As Decimal
Get
Dim decTotal As Decimal = 0D
For Each thisFoodDiaryItem As FoodDiaryItem In Me
Dim thisNutValue As NutritionalData = (From nd In thisFoodDiaryItem.Food.NutritionalDatas Where nd.NutritionalDefinitionID = 208).FirstOrDefault
If thisFoodDiaryItem.Food.FoodWeights.Count > 0 Then
Dim decWeight As Decimal = thisFoodDiaryItem.Food.FoodWeights(0).WeightInGrams
If Not thisNutValue Is Nothing Then
Dim decCalories As Decimal = Math.Round((thisNutValue.Value * (decWeight / 100)) * thisFoodDiaryItem.Amount)
decTotal += decCalories
End If
End If
Next
Return decTotal
End Get
End Property
Public ReadOnly Property TotalSugars() As Decimal
Get
Dim decTotal As Decimal = 0D
For Each thisFoodDiaryItem As FoodDiaryItem In Me
Dim thisNutValue As NutritionalData = (From nd In thisFoodDiaryItem.Food.NutritionalDatas Where nd.NutritionalDefinitionID = 269).FirstOrDefault
If thisFoodDiaryItem.Food.FoodWeights.Count > 0 Then
Dim decWeight As Decimal = thisFoodDiaryItem.Food.FoodWeights(0).WeightInGrams
If Not thisNutValue Is Nothing Then
Dim decCalories As Decimal = Math.Round((thisNutValue.Value * (decWeight / 100)) * thisFoodDiaryItem.Amount)
decTotal += decCalories
End If
End If
Next
Return decTotal
End Get
End Property
我希望在调用实体框架查询时使用这个类:
Protected Sub BindFoodDiaryItems()
CurrentFoodDiaryItems = New FoodDiaryItemCollection
CurrentFoodDiaryItems = (From fdi In db.FoodDiaryItems Where fdi.PersonID = CurrentSiteUser.PersonID And fdi.EntryDate = CurrentDiaryDate).ToList
If AllMeals Is Nothing Then
AllMeals = (From m In db.Meals).ToList
End If
lvMealsA.DataSource = AllMeals
lvMealsA.DataBind()
lblTotalCalories.Text = CurrentFoodDiaryItems.TotalCalories.ToString
lblTotalSugars.Text = CurrentFoodDiaryItems.TotalSugars.ToString
lblTotalFats.Text = CurrentFoodDiaryItems.TotalFat.ToString
lblTotalProtein.Text = CurrentFoodDiaryItems.TotalProtein.ToString
lblTotalCarbs.Text = CurrentFoodDiaryItems.TotalCarbs.ToString
End Sub
我假设它会是这样的:
Partial Public Class FoodDiaryItemCollection
Inherits List(Of FoodDiaryItem)
Sub New()
End Sub
End Class
我得到的错误:
无法将“System.Collections.Generic.List`1[NutritionBridgeModel.FoodDiaryItem]”类型的对象转换为“NutritionBridgeModel.FoodDiaryItemCollection”类型。
TIA
【问题讨论】:
-
"我希望在调用实体框架查询时使用这个类:"您能否编辑您的示例以包含您想要的
CurrentFoodDiaryItems用法?现在,你只需创建一个FoodDiaryItemCollection,然后你什么都不用做。
标签: asp.net vb.net entity-framework