Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq c中的单列分组_C#_Linq - Fatal编程技术网

C# Linq c中的单列分组

C# Linq c中的单列分组,c#,linq,C#,Linq,我有一个如下表:我需要显示它没有重复。所以我需要单独按客户分组。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())

我有一个如下表:我需要显示它没有重复。所以我需要单独按客户分组。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上的两个“名称”。

如果我理解正确,您希望按客户分组,并以逗号分隔名称。我创建了您的示例数据,并用查询语法编写了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);
        }
它的演示

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

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(); 
        }

    }

Customer=a.id,首先应该是Customer=a.Customer。然后需要在groupby之后进行选择:Selectg=>new{Customer=g.Key,Names=g.Selectgg=>gg.Name}省略fistordefault。。只需在groupby之后填写toList