gpt4 book ai didi

c# - 有条件的两个列表之间的 Linq

转载 作者:行者123 更新时间:2023-11-30 19:09:06 25 4
gpt4 key购买 nike

我有设置类

public class Setting 
{
public virtual string Key { get; set; }
public virtual string Value { get; set; }
}

我必须列出

IEnumerable<Setting> A1 => contain {"A","1"}{"B","2"}
IEnumerable<Setting> A2 => contain {"A","1"}{"B","5"}

我希望 linq 语句从列表 A2 中选择具有相同键和不同值的元素,这里是 {"B","5"}

我试过了

A2.Where(x => A1.Any(y => y.Value != x.Value)).ToList();

这给了我 A2 中的两个元素

谁能帮帮我谢谢


**编辑**我的设置类

 public class Setting : Entity<int>
{
public virtual DateTime? ModificationDate { get; set; }
public virtual string Name { get; set; }
public virtual string Description { get; set; }
public virtual string Key { get; set; }
public virtual string Value { get; set; }
public virtual string ModifiedBy { get; set; }
public virtual string Type { get; set; }
public virtual string ValidateRegex { get; set; }
public virtual bool IsSystem { get; set; }

}

我已经从 mvc IEnumerable<Setting> 返回了让它命名设置,

然后我从数据库中获取原始设置 IEnumerable<Setting>让它命名 dbsettings

我想知道设置中的更改值以对其进行更新

最佳答案

您还需要比较Key:

A2.Where(x => A1.Any(y => y.Key == x.Key && y.Value != x.Value)).ToList();

以下示例返回 { "B", "5"} 作为结果:

void Main()
{
var a1 = new List<Setting>(new Setting[] {
new Setting() { Key = "A", Value = "1" },
new Setting() { Key = "B", Value = "2" } });
var a2 = new List<Setting>(new Setting[] {
new Setting() { Key = "A", Value = "1" },
new Setting() { Key = "B", Value = "5" } });
var result = a2.Where(x => a1.Any(y => y.Key == x.Key && y.Value != x.Value)).ToList();
Console.WriteLine(result);
}

当你比较字符串时,你应该知道 ==!= 总是区分大小写。因此,需要在两个列表中以相同的方式编写键(并且大小写差异将被识别为相关差异)。您还可以使用 string.Compare 的重载更详细地指定比较选项。

关于c# - 有条件的两个列表之间的 Linq,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34197871/

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