我想使用 LINQ 选择一个唯一的字符串列表,存储为一个对象内的列表。该对象本身存储在另一个对象内的列表中。很难解释,这里是一个例子:
public class Master
{
public List<DataCollection> DateCollection { get; set; }
public Master() { this.DateCollection = new List<DataCollection>(); }
}
public class DataCollection
{
public List<Data> Data { get; set; }
public DataCollection() { this.Data = new List<Data>(); }
}
public class Data
{
public string Value{ get; set; }
public Data() { }
}
使用 Master 类,我想获得 Data 类中唯一值字符串的列表。我尝试了以下方法:
List<string> unique = master.Select(x => x.DataCollection.Select(y => y.Value)).Distinct().ToList();
谁能告诉我这是怎么做到的?
最佳答案
您可以这样做,直接使用公共(public) DateCollection
成员:
var unique = master.DateCollection
.SelectMany(x => x.Data.Select(d => d.Value))
.Distinct()
.ToList();
关键是 SelectMany
以“展平”选择。
关于c# - 使用 LINQ 在列表的列表中选择不同的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29679862/