簡體   English   中英

C#linq .FirstOrDefault()從XML獲取更多元素

[英]C# linq .FirstOrDefault() to get more elements from XML

上一次我詢問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>

使用.ToList()而不是.FirstOrDefault() select子句的第二行必須更改,因為您將處理列表而不是單個元素

請注意,列表永遠不會為空,但可以包含0個項目。

您想使用.Take()並使用想要的元素數量

.Skip()也是有用的功能

因此,例如將它們組合在一起,很容易執行分頁等操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM