【发布时间】:2015-12-08 19:45:27
【问题描述】:
我正在尝试将两个 LIKE 对象组合在一起并删除重复项。
这是我的对象[简单]
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; }
连接不工作。我不断得到标签的计数 0,我可以看到在 for 循环中返回 275 和 125。
提前感谢您的帮助。
还是有问题
我想使用下面的建议,但仍在苦苦挣扎。
传入的 string[] 将获得两个在循环中连接在一起时不唯一的标签项列表。我需要 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);
}
}
【问题讨论】: