[英]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.