[英]LINQ Basics, How do I do a groupby and get a string at the end?
您好,我有一个像这样的课程
class myclass
{
public string string1;
public string string2;
public string string3;
}
我有一个列表,我想生成一个唯一的string1的字符串列表。
List<myclass> myInstance = GetInstanceOfMyClass();
MethodThatRequiresListOfStrings( myInstance.GroupBy(p => ??????? .ToList<string>());
用什么代替??????? ?
我不敢相信我已经走了这么长时间了,没有跟lambda表情做过分组...
我想生成一个唯一的string1的字符串列表。
在这种情况下,您不需要分组操作; 您可能要使用Distinct
运算符:
var distinctString1s = myInstance.Select(p => p.string1)
.Distinct()
.ToList();
MethodThatRequiresListOfStrings(distinctString1s);
换句话说,通过将每个myclass
实例投影到其string1
字段来构造新序列,然后将该序列的离散项加载到列表中。
在这种情况下,我根本不会使用分组。 如果只需要不同的 string1值,请使用Distinct()
。
myInstance.Select(obj => obj.string1).Distinct(); // .ToList()
如果您想学习如何分组,请考虑一下
myInstance.GroupBy(obj => obj.string1).Select(grp => grp.Key); // .ToList()
但是,我还是选择第一个。
不需要GroupBy:
var distinctString1s = myInstance.Select(x => x.string1)
.Distinct()
.ToList();
MethodThatRequiresListOfStrings(myInstance.Select(s=>s.string1).Distinct().ToList());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.