将LINQ转换为lambda表达式
问题描述:
我有这个linq查询,它工作正常,但我想通过使用lambda表达式来简化它。任何建议或例子可能会有帮助。将LINQ转换为lambda表达式
List<string> myList= (from d in entities.PERSONS_TABEL
where d.PERSON_ID == personFrom.PERSON_UNIQ_ID
select d.PERSON_NAME).ToList();
答
你完全可以围绕它作为一个lambda来重新使用它,但是这将是相同的功能:
var GetList = (Person personFrom) => {
return (from d in entities.PERSONS_TABEL
where d.PERSON_ID == personFrom.PERSON_UNIQ_ID
select d.PERSON_NAME).ToList();
};
那么其他地方,你可以这样调用:
var myList = GetList(thePerson);
但正如我所说,是exacly一样的,如果你做的事:
public List<string> GetList(Person PersonFrom)
{
return (from d in entities.PERSONS_TABEL
where d.PERSON_ID == personFrom.PERSON_UNIQ_ID
select d.PERSON_NAME).ToList();
}
如果您没有将它作为参数传递给函数,那么直接函数调用总是会比通过委托调用lambda表达式更好。
答
这很简单,你几乎已经自己完成了。
var myList = entities.PERSONS_TABEL
.Where(p => p.PERSON_ID == personFrom.PERSON_UNIQ_ID)
.Select(p => p.PERSON_NAME)
.ToList()
'=>'前面的“p”与你的'from d'部分相同,其中p = d。 换句话说,从'=>'lambda运算符的左边放置输入参数,然后右边放置语句或赋值块。
你有试过什么吗? –
'personFrom'是什么? – maniak1982
您拥有的代码已经在使用lambda表达式。所以你已经完成了。恭喜。 – Servy