【问题标题】:Group by single column in Linq c#在Linq c#中按单列分组
【发布时间】:2016-04-22 05:10:43
【问题描述】:

我有一个如下表:我需要将其显示为没有重复项。所以我需要单独对客户进行分组。 c1 有两个“名称”

Id  Name    customer
1   XXXX     c1
2   YYYY     c1

我需要获取 c1 上的值:xxx ,yyy。但它得到 c1: xxx 和 c1: yyy。
我的代码是:

public List<data> GetComponentStatus()
{
    List<data> d= null;
    using(var entity=new FM())
    {
         d = entity.getdata()
             .Select(
                a => new data
                {
                    Customer = a.id,
                    Name = a.name,
                })
            .GroupBy(a=>a.Customer).Select(a=>a.FirstOrDefault()).ToList();
    }
    return d;
}

由此,我在使用 LastorDefault() 时获得了第一条记录或最后一条记录。

我想在单个客户 C1 上同时获得两个“名称”。

【问题讨论】:

  • Customer = a.id, 应该是 Customer = a.customer 对于初学者。然后你需要在groupby之后选择:Select(g =&gt; new { Customer = g.Key, Names = g.Select(gg =&gt; gg.Name) })
  • 省略 fistordefault().. 在 groupby 之后取 toList()

标签: c# linq


【解决方案1】:

如果我理解正确,您想按Customer 分组并以逗号分隔得到Name。我创建了您的示例数据并用查询语法编写了 LINQ。请参阅下面的 rextester 上的演示输出。

var data = new[] { new {ID = 1,Name = "XXXX", customer= "C1"},
                           new {ID = 2,Name = "YYYY", customer= "C1"},
                         };

        var query = from a in data
                    group a by a.customer into grp
                    select new {Cutomer= grp.Key ,Name = string.Join(",",grp.Select (g => g.Name)) };

        foreach (var e in query)
        {
          Console.WriteLine("Customer: {0} ,Name: {1}", e.Cutomer,e.Name);
        }

rextester上的演示

所以你的代码应该是这样的

public List<data> GetComponentStatus()
    {

        using(var entity=new FM())
        {
            var  d =  from a in entity.getdata()
                      group a by a.customer into grp
                      select new data {Cutomer= grp.Key ,Name = string.Join(",",grp.Select (g => g.Name))};

                return d.ToList(); 
        }

    }

【讨论】:

    猜你喜欢
    • 2017-04-06
    • 1970-01-01
    • 2023-03-21
    • 2011-01-10
    • 1970-01-01
    • 2013-05-16
    • 1970-01-01
    • 2015-12-06
    • 1970-01-01
    相关资源
    最近更新 更多