【发布时间】:2023-04-01 15:43:02
【问题描述】:
我们有包含成分的购物清单 DataTable。一种成分可以多次添加到购物清单中。
我想选择的是:在多少个购物清单中存在一种成分。即使成分在一个购物清单查询中多次出现,也应该返回 1。 简而言之:我需要 COUNT 个包含成分 ID 的 ShoppingListIngredients(无论是一次还是多次)
我试过这样:
var usersShoppingListIngredients = context.ShoppingListIngredients
.Where(sli => sli.ShoppingList.userId == userId)
.GroupBy(sli => sli.ingredientId)
.Select(sli => new
{
itemId = sli.Key,
item = sli.FirstOrDefault().CodingKeys.Ingredients.FirstOrDefault(i => i.languageId == languageId).coding,
itemsCount = sli.Count(),
percent = [Tell_Me_How] * 100 / totalPurchases
}).OrderByDescending(r => r.itemsCount);
但它返回错误值 - 当插入多个值时,它返回所有出现的次数。
我正在使用 Entity Framework 4.0。
任何提示将不胜感激;)
【问题讨论】:
-
我不知道你为什么不能只使用
sli.Count() * 100 / totalPurchases。ShoppingListIngredients看起来像一个连接表 (shoppinglistid PK, ingredientsid PK, userid PK) ,当您按成分 ID 对表进行分组时,那里不应该有多个购物清单 id。如果您可以提供示例数据或类的外观,那就太好了。 -
sli.Count() 仍然返回每个 ID 的出现总数。如果我按 ShoppingListIngredients 分组并且成分被插入 3 次,那么我得到 3。我需要 COUNT 个包含成分 ID 的 ShoppingListIngredients(不管是一次还是多次)。
标签: c# entity-framework entity-framework-4