我有一个对象列表和一个整数列表。对象具有称为exist的属性。
public bool exists;
我需要使用左联接来联接这两个列表,并且如果两个列表中都存在ID,则将“ exists”属性设置为true;
我预备了dotnetfiddle示例:
https://dotnetfiddle.net/sE1RIl
预期结果是(伪代码):
Item1.exists = true;
Item2.exists = true;
Item3.exists = false;
可能以后我需要添加更多的左联接,所以我对实现这一目标的最灵活方式感兴趣。
答案 0 :(得分:1)
您可以使用select
语句映射属性:
IEnumerable<Item> items = new List<Item>()
{
new Item (){id =1, name = "Item1"},
new Item (){id =2, name = "Item2"},
new Item (){id =3, name = "Item3"}
};
List<int> ids = new List<int>() {1,2};
var param_1 = true;
var param_2 = false;
var param_3 = true;
var listOfItems = from item in items
join id in ids on item.id equals id
into result
from r in result.DefaultIfEmpty()
select new Item
{
id = item.id,
name = item.name,
exists = (param_1 == true) ? true
: (param_2 == false && param_3 == true) ? false
: true
};