2016-02-04 116 views
-5

我有这个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(); 
+0

你有试过什么吗? –

+0

'personFrom'是什么? – maniak1982

+3

您拥有的代码已经在使用lambda表达式。所以你已经完成了。恭喜。 – Servy

回答

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); 

但正如我所说,是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表达式更好。

1

这很简单,你几乎已经自己完成了。

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运算符的左边放置输入参数,然后右边放置语句或赋值块。

More info about lambda expressions