如何在c#/ Linq中获取确定列名的值?

时间:2014-04-07 07:16:18

标签: c# linq dynamic-linq

我想知道是否有可能获得明确列名的值? 例如SELECT NAME FROM PERSON;

string NAME; <--- Column name
string fundPerson;
fundPerson = context.PERSON.Where(a => a... == NAME);

问题是列名可以更改,它并不总是“NAME”列。 因此,我需要一个解决方案,我可以动态地将列名传递给查询。

3 个答案:

答案 0 :(得分:2)

您希望C#中的源代码创建一个linq查询,该查询在Linq to SQL或Linq to Entity Framework下编译为SELECT NAME FROM PERSON

IEnumerable<string> names = from x in context.PERSONS
                            select x.Name;

OR

IEnumerable<string> names = context.PERSONS.Select(x => x.Name);

在Monad的说法中,您需要对Name属性进行投影。

编辑:你想动态说明哪一列?

string columnName = "Name";
ParameterExpression personExpression = Expression.Parameter(typeof(Person), "p");
Expression<Func<Person, string>> column = Expression.Lambda<Func<Person, string>>(Expression.PropertyOrField(personExpression, columnName), personExpression);

IEnumerable<string> things = context.PERSONS.Select(column);

答案 1 :(得分:0)

试试这个

fundPerson = context.PERSON.Where(a=>a... == NAME).Select(a=>a.NAME).SingleOrDefault();

答案 2 :(得分:0)

你的问题有点误导..你是否经过一系列名称,比如运行SQL“SELECT Name FROM Person”会得到什么?

如果是这样,使用Linq-to-sql语法:

var people = from p in context.PERSON select a.NAME;

如果您尝试根据NAME字符串找到特定的人?

string name = "barry";
var person = from p in context.PERSON select a where a.NAME.Contains(name);