将LINQ转换为lambda表达式

时间:2016-02-04 18:43:44

标签: c# asp.net .net 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();

2 个答案:

答案 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操作符放入输入参数,右键放置语句或赋值块。

More info about lambda expressions