LINQ作为方法参数
本文关键字:参数 方法 LINQ | 更新日期: 2023-09-27 18:15:08
我有一个像这样的简单对象
public class Test
{
public string Name {get; set;}
}
之后是List<Test> tests
然后我有一个方法在List中使用Test
对象做一些事情。
private void DoSomething(Test test)
{
//do some serious stuff here!
}
然后在应用程序中,这个Test
对象将在TreeView中填充,在用户单击它们之后,它们将被传递给上面的方法。目前,我发现选中的树节点如下:
string name = selectedNode.Text;
foreach(Test test in tests)
{
if (test.Name = name) DoSomething(test);
}
所以我的想法是,我不能想出一种方法在方法的参数中使用LINQ,而不是做那个无聊的foreach循环。
this.DoSomething(from x in tests where x.Name = "What I need to pass" select x)
怎么了?
谢谢!
this.DoSomething(tests.FirstOrDefault(x=>x.Name=="What I need to pass"))
您实际上是在进行搜索。假设名称是唯一的,您可以这样做:
var selectedTest = tests.SingleOrDefault(test => test.Name == selectedNode.Text);
if (selectedTest != null)
{
DoSomething(selectedTest);
}
linq查询的结果是一个iquerable对象。你可以用它作为参数
下面的代码片段可以工作。我不推荐它,除非你在DoSomething方法中检查空情况。您应该首先运行LINQ查询,存储结果并在将它们传递给新方法之前检查它们。
this.DoSomething(
(from x in tests
where x.Name = "What I need to pass"
select x).FirstOrDefault() as Test);