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必须更改,因为您将处理列表而不是单个元素

请注意,列表永远不会为空,但它可以包含 0 个项目。

于 2012-07-04T16:55:56.793 回答
0

你想使用 .Take() 并使用你想要的元素数量

同样有用的功能是 .Skip()

所以很容易做一些像分页这样的事情,例如结合它们。

于 2012-07-04T16:54:01.250 回答