1

前回、オブジェクトが存在するかどうかにかかわらず、データベースから要素に関する情報を取得する方法について linq について質問しました。答えは次のとおりです。

 var elements = XElement.Load("objects.xml");
    var query1 = from query in elements.Descendants("Lemma")
                let null_LemmaSign = query.Element("Lemma.LemmaSign")
                et null_TE = query.Descendants("TE.TE").FirstOrDefault()
                where wyszuk == query.Element("Lemma.LemmaSign").Value
                select new
                {
                  word = null_LemmaSign == null ? "none" : null_LemmaSign.Value,
                  te = null_TE == null ? "none" : null_TE.Value,
                };

    foreach (var e in query1)
    {
     MessageBox.Show(e.word.ToString() + " - " + e.te.ToString());
    }

他に可能性があったのは

let null_TE = query.Element("Sense").Element("TE").Element("TE.TE")

しかし今、私は の最初の要素以上のものを取得しなければならない状況にあり<TE>ます。

データベースからの例 (最初の項目の猫しか選択できませんが、すべてを収集したい)

<TE><TE.TE> cat</TE.TE></TE>,<TE><TE.TE> cat2</TE.TE></TE>,<TE><TE.TE> cat3</TE.TE></TE>
4

2 に答える 2

1

.ToList()の代わりに使用し.FirstOrDefault()ます。select単一の要素ではなくリストを扱うため、句の 2 行目を変更する必要があります。

リストが null になることはありませんが、0 個のアイテムが含まれる可能性があることに注意してください。

于 2012-07-04T16:55:56.793 に答える
0

.Take() を使用し、必要な要素数を使用したい

また、便利な関数は .Skip() です

そのため、それらを組み合わせて、たとえばページングのようなことを簡単に行うことができます。

于 2012-07-04T16:54:01.250 に答える