Linq - 选择特定列

时间:2014-10-06 07:29:22

标签: c# asp.net-mvc linq

在表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中选择特定列。

5 个答案:

答案 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();

并确保columnIdname不允许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;
        }
    }