C# LINQ:convert.Single()到查询表示法
所以我知道查询符号C# LINQ:convert.Single()到查询表示法,c#,linq,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
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);
我在谷歌上找不到太多的资源。
Single
在查询符号上没有完全相同的符号
你能做的最好的事情就是把你的查询用括号括起来,然后自己打电话。你不能。很多LINQ函数不能在查询语法中使用。充其量,您可以将两者结合起来并执行以下操作
var word = (from p in wordsList
where p.Id == savedId
select p).Single()
但在一个简单的例子中,“点符号”对我来说似乎更具可读性
有一个LINQ on使用的关键字列表,您可以从该列表中看到哪些函数集成到语言中。您唯一能做的是:
var word = (from w in wordsList
where w.Id == savedId
select w).Single();
但是它将不完全相同。它将转变为
var word = wordsList
.Where(p => p.Id == savedId)
.Single();
Single不是查询符号的一部分。您可以将第一个示例更改为以下内容,以实现您的目标:
var word = (from s in stringList where s.Length == 3 select s).Single();
但是它不会被准确地翻译成
Single(condition)
@MarcinJuraszek那么你可以在需要时在Single
中添加一个条件。@Vache…这正是OP要求转换的内容。@JonathonReinhart条件在where中。还是我不明白你在说什么?@Vache你说“你可以在单曲中添加一个条件”。。。在我看来,.Where(predicate).Single()
和.Single(predicate)
在功能上是相同的,并且会表现出相同的运行时性能。它们在功能上是相同的,但并不完全相同。但我对表演不太确定。它们应该是真的,真的很小的区别,你永远不应该带着它们。嗯……哦,我知道为什么Single()
在看到第二个项时引发异常,Single(谓词)
迭代整个集合,即使在前面看到第二个匹配元素时也是如此!在这种情况下,只需使用点符号即可。这是(向程序员)传达您要做的事情的最干净、最简洁的方式。