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

本文关键字:获取 Linq | 更新日期: 2023-09-27 17:56:58

我想知道是否可以获取定列名的值?示例SELECT NAME FROM PERSON;

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

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

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

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

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

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);

试试这个

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

你的问题有点误导。您是否在追求一组名称,就像运行 SQL"从人中选择名称"一样?

如果是这样,请使用 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);