关于LINQ的简单查询

时间:2010-10-04 09:58:06

标签: c# .net linq-to-xml

var q = from child in doc.Descendants("level")
        where (int)child.Attribute("id") == 55
        select (string)child.Element("Points").**Value.ToString()**;

我想在执行此查询后将q作为类型字符串。即使保留了额外的粗体线,这也给了我一些IEnumerable类型。

好吧,让我这样说吧。我想在不运行时抛出任何错误的情况下进行上面的查询,如下所示。

string q = from child in doc.Descendants("level")
           where (int)child.Attribute("id") == 55
           select (string)child.Element("Points");

任何帮助?

3 个答案:

答案 0 :(得分:4)

var q = (from child in doc.Descendants("level")
        where (int)child.Attribute("id") == 55
        select (string)child.Element("Points")).FirstOrDefault();

Enumerable.FirstOrDefault Method (IEnumerable)

答案 1 :(得分:2)

LINQ将始终返回可枚举的结果。要使其评估并返回一个结果,您可以使用

.First()

.FirstOrDefault()

.Single()

.SingleOrDefault()

取决于您的要求。

答案 2 :(得分:0)

即使结果包含单个记录,查询也将返回IEnumerable。试试这个 -

if q.count() > 0
    var singleQ = q.First();

或者,如果您确定至少会有一条记录,那么就这样做 -

string q = (from child in doc.Descendants("level")
           where (int)child.Attribute("id") == 55
           select (string)child.Element("Points")).First();