2

重複の可能性:
これのピボットを作成するにはどうすればよいですか

以下の表があります

 ID     |     value     |    Name
--------+---------------+------------------
  1           Digital        Model
  1           companyA       Manufacturer
  2           Analog         Model
  2           CompanyB       Manufacturer
  3           Fiber          Model
  3           CompanyC       Manufacturer

I need to convert this back to 

 ID     |     Model    |     Manufacturer
--------+--------------+-------------------
 1           Digital          companyA           
 2           Analog           CompanyB        
 3            Fiber           CompanyC       

このためのLinqクエリを手伝ってください。T-SQL を使用すると、適切に変換できます。ただし、Linq を使用すると、クエリの作成に問題が発生します。

4

1 に答える 1

1

これを試して:

 var results = Data.GroupBy(l => l.Name);
            .SelectMany( g => 
                         new 
                         { 
                             Metadata = g.Key, 
                             data = g 
                         });
var pivoted = new List<PivotedEntity>();

foreach(var item in results)
{
    pivoted.Add( 
        new PivotedEntity
        {
            Id  = item.Id,
            Model = item.data.Where(x => x.Name == "Model")
                        .FirstOrDefault().value,
            Manufacturer = item.data.Where(x => x.Name == "Manufacturer")
                         .FirstOrDefault().value,
        });
}

最初に新しいクラスを定義する必要があります。

public class PivotedEntity
{
    public int Id {get; set;}
    public string Model {get; set;}
    public string Manufacturer {get; set;}   
}
于 2012-06-19T15:20:46.957 に答える