재료를 보유하는 쇼핑 목록 DataTable 있습니다. 하나의 성분이 쇼핑 목록에 한 번 더 추가 될 수 있습니다.엔티티 프레임 워크 get (고유) 횟수 이벤트에 ID가 있습니다.
나는 하나의 성분이 얼마나 많은 쇼핑 목록에 있는지 선택하고 싶습니다. 성분이 하나 개의 쇼핑에 존재하는 여러 번하더라도 목록 쿼리 짧은 1. 를 반환해야합니다 :
: 나는 ingredientId 포함 ShoppingListIngredients의 COUNT (상관없이 한 번 또는 여러 번)는이 같은 시도가 필요합니다
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)처럼 보입니다. 당신이 ingredientsId로 테이블을 그룹화 할 때 거기에 다중 쇼핑 목록 ID가 없어야합니다. 샘플 데이터를 제공 할 수 있거나 클래스가 어떻게 생겼는지는 훌륭합니다. –
sli.Count()는 여전히 각 ID에 대한 총 발생 횟수를 반환합니다. ShoppingListIngredients로 그룹화하고 성분이 3 번 삽입되면 3이됩니다. ingredientsId가 포함 된 ShoppingListIngredients가 필요합니다 (1 회 또는 여러 번). – CyberHawk