2016-02-04 164 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