场我有这样的对象:使用变量值与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