2017-02-25 35 views
0

我希望能夠找到所有包含我在列表中的蘋果和桔子的項目。包含所有來自另一個列表的動態linq查詢

var itemToFind = new List<string>() 
{ 
     "apples", 
     "cookies" 
}; 

我該如何重寫這個,以便Contains是動態的?

這會返回我想要的,但是如何使其在我的列表中循環以便它是動態的?

var query = result 
     .Where(o => o.OrderItems 
     .Any(i => i.Item.Name.Contains("apples"))) 
     .Select(x => x) 
      .Where(y => y.OrderItems 
      .Any(b => b.Item.Name.Contains("cookies"))).ToList(); 
// returns 2 orders 
+0

您是否試圖單獨獲取「餅乾」和「蘋果」集,然後「加入」這兩個?您可以繼續加入循環中的一組比賽。 – mrtig

回答

0

這似乎是工作,但不知道這是最好的方式。

foreach (var item in listFacets) 
{ 
    // append where clause within loop 
    result = result 
    .Where(r => r.RecipeFacets 
    .Any(f => f.Facet.Slug.Contains(item))); 
} 
1

嘗試是這樣的:

result.Where(o => o.OrderItems.Any(i => itemToFind.All(itf => i.Item.Name.Contains(itf)))).ToList() 
+0

我得到0個結果。 – duyn9uyen

+0

你確定你在同一個集合上測試它嗎? – Dawid

+0

是的。這似乎工作,但不知道這是否是最好的方法。的foreach(在listFacets VAR項) { \t //追加其中環 \t結果內子句=導致 \t。凡(R => r.RecipeFacets \t。任何(F => f.Facet.Slug.Contains(項目))); } – duyn9uyen

相關問題