为ListView访问列表中列表的不同值

时间:2017-04-08 14:33:04

标签: c# .net linq

我有一个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`

2 个答案:

答案 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();