我有一个List" RootObject"包含另一个列表"组件"。所以基本上每个RootObject都可以有很多组件。我需要从"组件"中获取所有不同的值。绑定到ListView。
public class RootObject
{
public string id { get; set; }
public List<string> Components { get; set; }
public string name { get; set; }
}
我想我可能需要使用SelectMany但不知道如何获取它们...... 例如,我将我的根对象转换为
mylist = deserial.Deserialize<List<RootObject>>(response);
这很有效。然后我需要将一个组件列表放入ListView
`ListView.DataSource = //get list of Components`
答案 0 :(得分:2)
这会将不同的组件放入列表中:
var distinctComponents = rootObjects
.SelectMany(r => r.Components)
.Distinct()
.OrderBy(c => c)
.ToList();
我不知道您正在使用哪种GUI技术,但winforms ListView
没有简单的绑定机制。您需要手动添加项目和子项。因此,您也可以删除ToList()
并直接在foreach语句中枚举查询。
答案 1 :(得分:0)
对于不同的组件,你需要这样的东西:
List<RootObject> values = new List<RootObject>(); // assuming this is the collection
var distinctComponents = values.SelectMany(r => r.Components).Distinct().ToList();