如何抓住一个名字的所有所有者

时间:2020-09-17 15:03:57

标签: c# linq

我有一个简单的类数据,

var data = new List<PlainData>
            {
                new PlainData {Name = "A", Owner = "X"},
                new PlainData {Name = "A", Owner = "Y"},
                new PlainData {Name = "B", Owner = "X"}
            };

在同一Name,我拥有一个或多个所有者。

现在,我想将此数据转换为基于列表的所有者,例如下面的类,

public class ListBasedData
    {
        public string Name { get; set; }
        public List<string> Owners { get; set; }
    }

在这里我想做的是,如何抓住名称的所有所有者?

List<ListBasedData> listBasedDatas = new List<ListBasedData>();

            var groups = data.GroupBy(a => a.Name);

            foreach (var group in groups)
            {
                var a = group.Key;

                var b = group.ToList();

                listBasedDatas.Add(new ListBasedData{Name = group.Key, Owners = });
            }

1 个答案:

答案 0 :(得分:2)

List<ListBasedData> listBasedDatas = data
    .GroupBy(a => a.Name)
    .Select(grp => new ListBasedData
    {
        Name = grp.Key,
        Owners = grp.Select(x => x.Owner).ToList()
    })
    .ToList();

关键是使用Select对从PlainDatastring的每个组中的所有者进行投影。

相关问题