在表I中有5列: - name,age,dob,doj,entrydate。
string column = 'dob'; // This is dynamic
var data = ctx.tblTable
.Where(e => e.Id == Id && e.Name == name)
.Select(e => column).SingleOrDefault();
不幸的是,这不起作用。如何在linq中选择特定列。
答案 0 :(得分:3)
用作
var data = ctx.tblTable
.Where(e => e.Id == Id && e.Name == name)
.SingleOrDefault().ColumnName;
答案 1 :(得分:3)
string column = 'dob'; // This is dynamic
var data = ctx.tblTable
.Where(e => e.Id == Id && e.Name == name)
.ToList()
.Select(e => GetPropValue(e, column))
.FirstOrDefault();
public object GetPropValue(object obj, string propName)
{
return obj.GetType().GetProperty(propName).GetValue(obj, null);
}
答案 2 :(得分:0)
你可以尝试
string column = 'dob';
var data = ctx.tblTable
.Where(e => e.Id == Id && e.Name == name)
.Select(e = > e.GetType().GetProperty(column).GetValue(e,null));
答案 3 :(得分:0)
使用SQL查询代替?我假设您正在使用实体框架。在这种情况下使用:
var columnValues = ctx.Database
.SqlQuery<string>("SELECT " + column + " FROM tblTable WHERE Id = " + Id + " AND Name = '" + name + "'").ToList();
并确保column
,Id
和name
不允许SQL注入或不需要的值。你可以用参数化查询来做到这一点。
答案 4 :(得分:0)
public class TestClass
{
public Guid Id { get; set; }
public string Name { get; set; }
public DateTime Dob { get; set; }
public void YourMethod()
{
List<TestClass> temp = new List<TestClass>();
var x = from xyz in temp
where xyz.Name == "Name" && xyz.Id == new Guid()
select xyz.Dob;
}
}