我有這個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();
我有這個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