我正在嘗試選擇 item.itemApplications 串列包含 itemApplication.itemApplicationId == 5 的專案串列。尋找最簡單最干凈的方法來回傳串列<專案>。
{
"items": [
{
"itemId" : 1,
"itemApplications": [
{
"itemApplicationId": 7,
"name": "application7",
},
{
"itemApplicationId": 4,
"name": "application4",
}
]
},
{
"itemId" : 2,
"itemApplications": [
{
"itemApplicationId": 3,
"name": "application3",
},
{
"itemApplicationId": 5,
"name": "application5",
}
]
}
]
}
希望過濾只回傳 List < item >:
{
"itemId" : 2,
"itemApplications": [
{
"itemApplicationId": 3,
"name": "application3",
},
{
"itemApplicationId": 5,
"name": "application5",
}
]
}
uj5u.com熱心網友回復:
一種選擇是使用LinqwithWhere和Anyselect itemsWhere itemApplications.Any有一個itemApplicationId等于任何東西,在你的例子中,5:
public class Item
{
public int itemId {get; set;}
public List<ItemApplications> itemApplications { get; set; }
}
public class ItemApplications
{
public int itemApplicationId {get; set;}
public string name {get; set;}
}
List<Item> items = new List<Item>
{
new Item { itemId = 1, itemApplications = new List<ItemApplications> { new ItemApplications { itemApplicationId = 7, name = "application7" }, new ItemApplications { itemApplicationId = 4, name = "application4" } } },
new Item { itemId = 2, itemApplications = new List<ItemApplications> { new ItemApplications { itemApplicationId = 3, name = "application3" }, new ItemApplications { itemApplicationId = 5, name = "application5" } } },
};
var i = items
.Where(a => a.itemApplications
.Any(b => b.itemApplicationId == 5))
.ToList();
i.ForEach(a => a.itemApplications
.ForEach(b => Console.WriteLine($"id: {b.itemApplicationId}, name: {b.name}")));
//Prints
//id: 3, name: application3
//id: 5, name: application5
uj5u.com熱心網友回復:
你可以通過簡單地寫這個得到結果
var desiredItems = (
from item in items
where item.itemApplications.Any(i => i.itemApplicationId == 5)
select item
).ToList();
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/517305.html
標籤:C#林克
下一篇:C#中對陣列的SQL選擇
