我试图确定是否有更好的方法来执行以下查询:
我有一个List的Pair对象.
A Pair定义为
public class Pair
{
public int IDA;
public int IDB;
public double Stability;
}
Run Code Online (Sandbox Code Playgroud)
我想提取一个包含在中的所有不同ID(int)的列表List<Pair>.
我目前正在使用
var pIndices = pairs.SelectMany(p => new List<int>() { p.IDA, p.IDB }).Distinct().ToList();
Run Code Online (Sandbox Code Playgroud)
哪个有效,但对我来说似乎不直观,new List<int>只能让它变得扁平化SelectMany.
这是另一种我认为至少可以说不优雅的选择:
var pIndices = pairs.Select(p => p.IDA).ToList();
pIndices.AddRange(pairs.Select((p => p.IDB).ToList());
pIndices = pIndices.Distinct().ToList();
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?如果没有,你更喜欢哪一个?
Union()在单独选择A和B后,您可以使用它们来获得它们.
var pIndices = pairs.Select(p => p.IDA).Union(pairs.Select(p => p.IDB));
Run Code Online (Sandbox Code Playgroud)