繁体   English   中英

LINQ基础知识,如何进行分组并最后得到一个字符串?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM