我想从列表中获取单个对象
Node node= ListNodes.where(n=>n.path=="c:\\test").single();
OR
Node node= ListNodes.Single(n=>n.path=="c:\\test");
ListNodes是Node类的列表
但两个代码都给我错误,
表达式不能包含lambda表达式。
有谁能告诉我,出了什么问题?
答案 0 :(得分:4)
这是即时窗口中显示的消息。之所以发生这种情况,是因为lambda表达式通常涉及捕获的范围更改代码的整个结构;在编译期间可以很好地完成,但不能在调试期间动态发生。因此:立即窗口不支持此功能。
可以一些 lambdas 可以在立即窗口中成功处理而不重写(你的可能就是其中之一),但是:
答案 1 :(得分:0)
你需要使用转义字符。
Node node= ListNodes.Single(n=>n.path=="c:\\test");
或
Node node= ListNodes.Single(n=>n.path==@"c:\test");
答案 2 :(得分:0)
如果上述两项不起作用,则:
我们不知道ListNode是什么类型。我的猜测是它没有一个名为'Where'或'Single'的扩展函数,或者你在代码中缺少'using System.Linq'语句。
using System.Linq;
// blah blah
Node node= ListNodes.Where(n=>n.path == @"c:\test").Single();
答案 3 :(得分:0)
您可以像下面这样使用它:
var ListNodes = new List<Node>() { new Node { path = "c:\\test" } };
Node node = ListNodes.Where(n => n.path == "c:\\test").Single();