您好,我有一个类似的课程
class myclass
{
public string string1;
public string string2;
public string string3;
}
我有一个列表,我想生成一个唯一string1的字符串列表。
List<myclass> myInstance = GetInstanceOfMyClass();
MethodThatRequiresListOfStrings( myInstance.GroupBy(p => ??????? .ToList<string>());
什么会取代??????? ?
我不敢相信,如果没有使用lambda表达式进行分组,我已经走了这么久......
答案 0 :(得分:2)
我想生成一个字符串列表 unique string1 s。
在这种情况下,您不需要分组操作;您可能想要使用Distinct
运算符:
var distinctString1s = myInstance.Select(p => p.string1)
.Distinct()
.ToList();
MethodThatRequiresListOfStrings(distinctString1s);
换句话说,通过将每个myclass
实例投影到string1
字段来构造一个新序列,然后加载 的distict项>序列到列表中。
答案 1 :(得分:1)
在这种情况下,我根本不会使用分组。如果您只想要 distinct string1值,请使用Distinct()
。
myInstance.Select(obj => obj.string1).Distinct(); // .ToList()
如果您想了解如何分组,请考虑
myInstance.GroupBy(obj => obj.string1).Select(grp => grp.Key); // .ToList()
然而,再次,我会选择第一个选项。
答案 2 :(得分:0)
不需要GroupBy:
var distinctString1s = myInstance.Select(x => x.string1)
.Distinct()
.ToList();
答案 3 :(得分:0)
MethodThatRequiresListOfStrings(myInstance.Select(s=>s.string1).Distinct().ToList());