C#LINQ - 将行分成两行

时间:2018-05-10 06:04:34

标签: c# mysql linq

对于这个可能很愚蠢的问题感到抱歉,但我已将此Ienumerable<>设置为

Dataset

我需要将名称和百分比拆分为单独的行,并为这些行复制ProductId和RowIndex(我知道它不是有效的,但它需要做什么)。并且可能是一个新字段,用于指定组合行的数据。

例如,

ProductId, Name , Percent, RowIndex 2301283 , PLACEHOLDER, 12.20 , 1

应该变成这个:

ProductId, DataType, Value , RowIndex 2301283 , Name , PLACEHOLDER, 1 2301283 , Percent , 12.20 , 1 etc etc

此外,如果有意义,它们不能嵌套在其他列表或枚举或任何内容中。

这可能在LINQ中吗?

1 个答案:

答案 0 :(得分:0)

试试这个

这会导致SelectMany

的结果不明朗
   var data = (from entity in Entities
    select new [] {
         new { entity.ProductId, DataType = "Name", Value= entity.Name, entity.RowIndex},
         new { entity.ProductId, DataType = "Percentage", Value= entity.Percentage, entity.RowIndex},
    }).SelectMany(e=> e);

这将为您提供列表,其中每个元素都包含Name和Percetnage行

   var data = (from entity in Entities
    select  new {
         NameEntity = new { entity.ProductId, DataType = "Name", Value= entity.Name, entity.RowIndex},
         PercentageEntity = new { entity.ProductId, DataType = "Percentage", Value= entity.Percentage, entity.RowIndex},
    });

  foreach(var d in data) {
    //d.NameEntity
    //d.PercentageEntity  
  }