2013-06-24 4 views
1

나는 성분 표의 배열을 가지고 있으며 모든 성분을 포함하고 모든 성분을 포함하지 않는 모든 요리법을 찾아야합니다. 등 ID1과 ID2와 ID3를 포함하는 조리법을 얻을 .. 내가이 원하는 그 ID1 또는 ID2 또는 ID3 등을 포함 조리법을 얻을 :목록의 모든 ID와 일치하는 모든 개체를 선택하는 방법은 무엇입니까?

var query = (from ri in db.RecipesIngredients 
        where SelectedIDs.Contains(ri.IngredientId) 
        select ri.RecipeId).Distinct(); 

이 역할 :

나는 이런 식으로 뭔가를 시도 .

이것은 가능합니까?

+0

테이블에 레시피 테이블이 있습니까? – nerdybeardo

+0

* 모든 * 선택된 성분을 포함하는 레시피가 필요합니까? 아니면 선택되지 않은 성분을 포함하지 않습니까? –

+0

예 조리법 테이블이있어 선택한 모든 성분을 포함하는 조리법을 가져와야합니다. – Yasmine

답변

4

당신이 가까이있어 :

과 같이

var query = (from r in db.Recipes 
        where SelectedIDs.All(i => r.Ingredients.Any(ri => ri.IngredientId == i)) 
        select r.RecipeId).Distinct(); 

가 번역 "나에게 SelectedIDs의 모든 재료는 재료의 조리법의 목록에있는 조리법을 모두 줘." - 그것은으로 변환 여부를

var query = db.RecipesIngredients 
       .Except(db.RecipeIngredients 
         .Where(x => SelectedIDs.Contains(x.IngredientId))) 
       .Select(ri => ri.RecipeId); 

나는 그 논리적 말이 생각 :

+0

잘 작동하지만 여기에서 한 것을 이해할 수 없습니다. 설명해 주시겠습니까? – Yasmine

+0

번역이 추가되었습니다. –

+0

도움 주셔서 감사합니다. – Yasmine

3

난 당신이 실제로 당신이 사용할 수있는 경우에 선택되지 않은 성분을 포함하지 않는 모든 조리법을 원하는 의심 SQL은 다른 문제입니다.

의 경우 선택한 재료가 모두 포함 된 레시피를 원하지만 (선택되지 않은 다른 재료도 포함될 수 있음) D Stanley의 대답은 아마도 내가 한 것일 것입니다.

+0

예 선택한 모든 재료를 포함하는 모든 요리법을 원하며 다른 선택되지 않은 재료도 포함될 수 있습니다. – Yasmine

관련 문제