C# 如何修改对象取决于linq中的连接条件
我有一个对象列表和整数列表。对象具有名为exists的属性C# 如何修改对象取决于linq中的连接条件,c#,linq,C#,Linq,我有一个对象列表和整数列表。对象具有名为exists的属性 public bool exists; 我需要使用左连接连接这两个列表,如果两个列表中存在ID,则将exists属性设置为true 我预印了dotnetfiddle示例: https://dotnetfiddle.net/sE1RIl 预期结果是伪代码: Item1.exists = true; Item2.exists = true; Item3.exists = false; 以后可能需要添加更多的左连接,因此我对实现这一点的
public bool exists;
我需要使用左连接连接这两个列表,如果两个列表中存在ID,则将exists属性设置为true
我预印了dotnetfiddle示例:
https://dotnetfiddle.net/sE1RIl
预期结果是伪代码:
Item1.exists = true;
Item2.exists = true;
Item3.exists = false;
以后可能需要添加更多的左连接,因此我对实现这一点的最灵活的方法感兴趣。您可以使用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
};
不错。谢谢为什么我应该使用匿名类型?“我的项目类似乎足以返回该类的新实例。@justme Ooops,抱歉,在您的小提琴中没有看到您的项目类。”。请看我的最新答案非常感谢你。由于您对c的了解似乎很大,我想问您如何将函数结果分配到上面示例中的属性。我尝试这样做smth:exists==>{ifparam1==true返回true;if param2==false&¶m3==true返回false}