我有这个linq查询,它运行正常,但我希望通过使用lambda表达式来简化它。任何建议或示例都可能有所帮助。
List<string> myList= (from d in entities.PERSONS_TABEL
where d.PERSON_ID == personFrom.PERSON_UNIQ_ID
select d.PERSON_NAME).ToList();
答案 0 :(得分:2)
你完全可以将它作为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);
但正如我所说的那样,就像你做的那样:
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更好。
答案 1 :(得分:1)
这很简单,你几乎已经自己完成了。
var myList = entities.PERSONS_TABEL
.Where(p => p.PERSON_ID == personFrom.PERSON_UNIQ_ID)
.Select(p => p.PERSON_NAME)
.ToList()
'=&gt;'前面的“p”与你的'from d'部分相同,其中p = d。 换句话说,离开'=&gt;' lambda操作符放入输入参数,右键放置语句或赋值块。