場我有這樣的對象:使用變量值與LINQ
public class MyObject
{
public int Id { get; set; }
public string FieldA { get; set; }
public string FieldB { get; set; }
public string FieldC { get; set; }
public string FieldD { get; set; }
}
我有一個IList <此對象>:
IList<MyObject> MyListObject = new List<MyObject>();
我做的LINQ查詢就可以了:
var result = (from p in MyListObject where p.FieldC == "Test" select p.FieldA);
在這種情況下,我返回「p.FieldA」,但有時我需要返回「p.FieldB」。我希望把字段(FIELDA或FieldB)的名稱在一個變量這樣
var myvar = "FieldB"
var result = (from p in MyListObject where p.FieldC == "Test" select p.????);
如何在LINQ查詢使用MYVAR內容(FieldB)的字段名?
謝謝,
這將無法正常工作,因爲你的fieldGetter是Func,這將工作只有當你的fieldGetter類型爲Expression >時,你會得到一個運行時不支持Invoke的錯誤。你將不得不結合linq表達式。 –
2011-03-30 08:23:41
選項2是一個很好的答案,因爲它允許您通過向交換機添加更多條目來添加更多的字段選擇。 – SecretDeveloper 2011-03-30 08:27:05
@Akash Kava,對於LINQ to Objects,它會起作用。反射在數據庫服務器上無效,所以我認爲不使用表達式語法更安全。如我錯了請糾正我。 – GvS 2011-03-30 08:32:21