gpt4 book ai didi

c# - 需要一个也比较属性的 linq 连接

转载 作者:太空宇宙 更新时间:2023-11-03 16:43:20 25 4
gpt4 key购买 nike

我有两个实体列表。假设 list1 是远程的而 list2 是本地的——list1 是过去某个时间创建的,而 list2 刚刚生成。

我想比较两个列表,通过 .id 匹配,并只比较每个元素的 .flag 属性。在 .flag 属性不同的地方,我想选择较旧的元素,但使用 list2(新列表)中的 .flag 属性。

下面的示例展示了如何只选择 list1 中不同的实体。如何从 list1 中选择不同的实体,但使用 list2 实体中的 .flag 属性。

注意:我不想选择新的 SomeEntity(){} 整个 SomeEntity 类,因为在实际问题中,我正在使用的类有很多属性。

class SomeEntity
{
public int id;
public bool flag;
public int some_value = -1;
}

// Setup the test
List<SomeEntity> list1 = new List<SomeEntity>();
List<SomeEntity> list2 = new List<SomeEntity>();
for (int i = 0; i < 10; i++ )
{
list1.Add(new SomeEntity() { id = i, flag = true, some_value = i * 100 });
list2.Add(new SomeEntity() { id = i, flag = true, });
}
// Toggle some flags
list1[3].flag = false;
list2[7].flag = false;

// Now find the entities that have changed and need updating
var items_to_update = from x in list1
join y in list2 on x.id equals y.id
where x.flag != y.flag
select x;

最佳答案

您可以在检索 items_to_update 集合后将其添加到您的代码中:

 foreach (var item in items_to_update)
{
item.flag = list2.Where(c => c.id == item.id).SingleOrDefault().flag;
}

关于c# - 需要一个也比较属性的 linq 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6742695/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com