LINQ:将.Single()转换为查询表示法

时间:2014-01-17 19:32:10

标签: c# linq

所以我知道查询符号

var word = from s in stringList
           where s.Length == 3
           select s;

相当于点符号

var word = stringList
           .Where(s => s.Length == 3)
           .Select(s => s);

但是如何将此点符号转换为查询符号?

var word = wordsList
           .Single(p => p.Id == savedId);

我在Google上找不到太多资源。

4 个答案:

答案 0 :(得分:6)

你做不到。查询语法中不能使用很多LINQ函数。充其量,您可以将两者结合起来并执行类似

的操作
var word = (from p in wordsList
            where p.Id == savedId
            select p).Single()

但是在collection.Single(condition)的简单情况下,“点符号”对我来说似乎更具可读性。

LINQ在MSDN上使用了关键字列表,您可以看到哪些功能已集成到该列表中的语言中。

答案 1 :(得分:3)

Single在查询表示法中没有完全等效的内容。

你能做的最好的事情是将你的查询包装在括号中并自己调用。单独。

答案 2 :(得分:2)

你唯一能做的就是:

var word = (from w in wordsList
            where w.Id == savedId
            select w).Single();

它不会完全相同。它将转化为

var word = wordsList
           .Where(p => p.Id == savedId)
           .Single();

答案 3 :(得分:0)

Single不是查询表示法的一部分。您可以将第一个示例更改为以下内容以实现您的目标:

var word = (from s in stringList where s.Length == 3 select s).Single();