,我有幾類這樣的:LINQ,第三個嵌套的孩子的財產價值等於什麼?
public class RestaurantMenu
{
public List<MenuItem> MenuItems { get; set; }
}
public class MenuItem
{
public decimal Price { get; set; }
public List<FoodItem> FoodItems { get; set; }
}
public class FoodItem
{
public string Label { get; set; }
}
鑑於RestaurantMenu
列表,我試圖返回任何匹配的結果,其中餐廳菜單的菜單商品的食品商品標籤與列表中的所有字符串匹配。基本上,你輸入你想吃的食物,它應該返回任何餐館,他們有你想吃的所有東西。它應該支持多個字符串,但我甚至無法匹配一個字符串。
所以假設如下:
List<RestaurantMenu> allRestaurantMenus = /blah;
List<string> labelOfFoodsDesired = /blah;
我試圖通過鏈接做在那裏表情就像這樣:
IQueryable<RestaurantMenu> query = allRestaurantMenus.AsQueryable();
foreach (string foodItem in labelOfFoodItemsDesired)
{
query = query.Where(x => x.MenuItems.Any(y => y.FoodItems.Select(z => z.Label).Contains(foodItem)));
}
List<RestaurantMenu> matchingRestaurantMenus = query.ToList();
但它總是不返回任何結果,即使通過調試我肯定有一場比賽。我怎麼寫這個查詢?
我認爲你的鏈接調用有什麼問題是你正在重新分配查詢變量。因此,您的查詢具有所有的菜單菜單都會設置爲空或空列表。 – Miguel
如果我理解正確,那麼不是這樣。由於可查詢對象的延遲執行,我可以像上面那樣構造查詢,並且在我調用列表之前它不會實際執行。 (x => id == 2).Where(x => x.Id == 3).Where(x => x.Id == 4)將與查詢無異。它在執行前將它們組合成query.Where(x => x.Id == 2 && x.Id == 3 && x.Id == 4)的單個查詢。不是那樣會返回任何結果,因爲這是不可能的,但僅僅是一個例子。 – SventoryMang