私はlinqが初めてです。データベースからいくつかのクラスを埋めるためにlinqを使用しています。
小さなことを除いて、すべてのオブジェクトはlinqを使用して正しく埋められています。以下では、"SAR" "Flight Direction" (行 15、16) の場合、Ascendingの値とDescendingの値が必要であることがわかります。しかし、私が得ているのは "Ascending" の 2 つの値オブジェクトです。
私の値をループしていないのはなぜですか? LINQ に欠けているものは何ですか?
これが私のDBの結果です:
これが私の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()
}
);
}
}