gpt4 book ai didi

c# - 如何使用 Linq 合并两个 C# 对象

转载 作者:行者123 更新时间:2023-11-30 19:24:40 32 4
gpt4 key购买 nike

我正在尝试将两个 LIKE 对象组合在一起并删除重复项。

Tried this

This didn't work

这是我的对象[简单]

public class LabelItem
{
public string LabelName { get; set; }
public string LabelValue { get; set; }
}

我的数据调用返回相同的对象类型

public static List<LabelItem> ReturnControlLabelList(Enums.LanguageType languageType, string labelList = "")

我把它传递给方法

string[] LABELLIST = new string[] { "foxLabel", "commonLabel" };
var helper = new LabelHelper(, LABELLIST);

这是我得到null的地方

    public LabelHelper(Enums.LanguageType languageType, string[] labelListName)
{
if (labelListName != null)
{
List<LabelItem> labels = new List<LabelItem>();
this.LabelList = new List<LabelItem>();

foreach (var name in labelListName)
{
labels = DBCommon.ReturnControlLabelList(languageType, name);
this.LabelList.Concat(labels).Distinct().ToList();
}

}
else
{
this.LabelList = null;
}

}

public List<LabelItem> LabelList { get; private set; }

concat 无效。我不断得到标签的计数 0,我可以看到在 for 循环中返回 275 和 125。

在此先感谢您的帮助。

还有问题

我想使用下面的建议,但仍在努力。

传入的 string[] 会得到两个 labelitem 的列表,在循环中连接在一起时这两个列表不是唯一的。我需要 this.LabelList 中返回的多个列表的区别。

我得到它来处理这个但是......我敢肯定它的效率低得离谱。

感谢您的帮助。

             this.LabelList = new List<LabelItem>();

foreach (var name in labelListName)
{
var ret = DBCommon.ReturnControlLabelList(languageType, name);
this.LabelList = this.LabelList.Concat(ret).Distinct().ToList();
}

var distinctList = this.LabelList.GroupBy(x => new { x.LabelName, x.LabelValue })
.Select(x => x.FirstOrDefault());

this.LabelList = new List<LabelItem>();

foreach (var item in distinctList)
{
this.LabelList.Add(item);
Debug.WriteLine(item.LabelName + ' ' + item.LabelValue);
}

}

最佳答案

this.LabelList.Concat(labels).Distinct().ToList(); 不将其分配给某物没有多大意义。 LINQ 查询不会修改源集合,它会返回一个新集合,因此如果您希望它得到更新,您必须将它分配回 this.LabelList:

this.LabelList = this.LabelList.Concat(labels).Distinct().ToList();

你应该知道,这是一个非常低效的解决方案,你应该使用基于 SelectMany 的东西:

this.LabelList
= labelListName.SelectMany(name => DBCommon.ReturnControlLabelList(languageType, name)
.Distinct()
.ToList();

关于c# - 如何使用 Linq 合并两个 C# 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34144104/

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