2012-09-20 80 views
1

我是新來的linq。我正在使用LINQ到fill some classes from the database迭代值

我的所有對象都使用我的linq正確填充,除了一件小事。下面你可以看到,對於「SAR」「飛行方向」(行15,16),我應該有一個值爲升序和值爲降序。但是我得到的是什麼是「升序」的兩個值對象。

爲什麼它不循環我的值?什麼是LINQ缺失?

這裏是我的DB的結果:

enter image description here

這裏是我的LINQ:

using (NpgsqlDataReader reader = command.ExecuteReader()) 
{ 

    if (reader.HasRows) 
    { 

     var groups = reader.Cast<System.Data.Common.DbDataRecord>() 
      .GroupBy(dr => new { ID = (int)dr["id"], AttID = (int)dr["AttId"] }) 
      .GroupBy(g => g.Key.ID); 

     typeDataList = (
      from typeGroup in groups 
      let typeRow = typeGroup.First().First() 
      select new TypeData() 
      { 
       ID = (int) typeRow["id"], 
       Type = (string) typeRow["type"], 
       Attributes = 
       (
        from attGroup in typeGroup 
        let attRow = attGroup.First() 
        select new TypeDataAttribute() 
        { 
         ID = (int)attRow["AttId"], 
         Label = (string)attRow["label"], 
         PossibleValues = 
         (
          from row in attGroup 
          where !DBNull.Value.Equals(attRow["AttValueId"]) 
          select new TypeDataAttributeValue() { ID = (int)attRow["AttValueId"], Value = (string)attRow["value"] } 
         ).ToArray() 
        } 
       ).ToArray() 
      } 
     ); 
    } 
} 

回答

2

您從attRow採取Value,你應該把它從row

+0

非常感謝您的先生。 – capdragon