Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何修改对象取决于linq中的连接条件_C#_Linq - Fatal编程技术网

C# 如何修改对象取决于linq中的连接条件

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; 以后可能需要添加更多的左连接,因此我对实现这一点的

我有一个对象列表和整数列表。对象具有名为exists的属性

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}