C# 关于LINQ的一个简单查询

C# 关于LINQ的一个简单查询,c#,.net,linq-to-xml,C#,.net,Linq To Xml,我希望在执行此查询后将q作为类型字符串。即使保留了额外的粗体线条,这也给了我一些IEnumerable类型 让我这么说吧。我想让上面的查询类似于下面的查询,而不让运行时抛出任何错误 var q = from child in doc.Descendants("level") where (int)child.Attribute("id") == 55 select (string)child.Element("Points").**Value.ToString()

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

让我这么说吧。我想让上面的查询类似于下面的查询,而不让运行时抛出任何错误

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

有什么帮助吗?

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

string q = from child in doc.Descendants("level")
           where (int)child.Attribute("id") == 55
           select (string)child.Element("Points");
或者,如果您确定至少会有一条记录,则按如下方式操作-

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

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

string q = from child in doc.Descendants("level")
           where (int)child.Attribute("id") == 55
           select (string)child.Element("Points");
或者,如果您确定至少会有一条记录,则按如下方式操作-

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

LINQ将始终返回可枚举的结果。为了让它评估并返回一个结果,您可以使用

根据您的要求。

LINQ将始终返回可枚举的结果。为了让它评估并返回一个结果,您可以使用


取决于您的要求。

那是kewl..谢谢CD..我爱上了这个LINQ东西。那是kewl..谢谢CD..我爱上了这个LINQ东西。您的第一个-测试
(q.count()>0)
第一个-将对查询进行两次评估,不是吗?一次检查计数,然后一次读取值。如果您先使用
First
FirstOrDefault
,那么它应该只对它求值一次。您的第一个-测试
(q.count()>0)
First-将对查询求值两次,不是吗?一次检查计数,然后一次读取值。如果使用
First
First或default
,则应仅对其求值一次。