c#从List转到另一个列表<与选定的字段
本文关键字:列表 另一个 字段 List | 更新日期: 2023-09-27 18:09:05
我想知道是否有一个更简单的方法来做到这一点使用LINQ或其他方式…
我想从List中提取所有行,按特定字段对它们进行分组,并将结果存储在另一个不同的列表中,例如包含分组的,不重复的搜索参数结果的List。
下面是一个例子:
public class CustomObj
{
public int DOC { get; set; }
public string Desc { get; set; }
public string Name{ get; set; }
}
public class Worker()
{
public void DoWork()
{
List<CustomObj> objs = new List<CustomObj>();
objs.Add(new CustomObj(1, "Type1", "Name1"));
objs.Add(new CustomObj(1, "Type2", "Name1"));
objs.Add(new CustomObj(2, "Type2", "Name2"));
objs.Add(new CustomObj(3, "Type1", "Name1"));
objs.Add(new CustomObj(3, "Type2", "Name1"));
objs.Add(new CustomObj(3, "Type3", "Name1"));
// HERE'S WHAT I'D LIKE TO DO
// NOTE THAT THIS IS NOT A CORRECT FORMATED FUNCTION
List<int> docs = objs.GroupBy(o => o.DOC).Select(o => o.DOC).ToList<int>();
}
}
最后我的docs List应该是这样的
docs[0] = 1
docs[1] = 2
docs[2] = 3
在我当前的项目中,到目前为止,我有10个不同的对象,我将不得不对它们全部执行此操作。当然,我希望避免为每一个都编写扩展的函数。
所以如果没有别的办法,至少我想知道。
谢谢
怎么样:
List<int> docs = objs.Select(o => o.DOC).Distinct().ToList();
或者,如果您想使用GroupBy:
var docs = objs.GroupBy(o => o.DOC).Select(o => o.Key).ToList();