1

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

1 に答える 1

2

Valueから取っています。attRowから取ってくださいrow

于 2012-09-20T15:55:51.997 に答える