使用Entity Framework 6.0选择特定列

时间:2014-10-21 10:10:22

标签: .net linq entity-framework

我从几天开始浏览各种解决方案,但没有人帮助过我。我想要获取

我:用户名,用户名,电子邮件(一个案例)

ii:userid,username,firstname,lastname(second case)

iii:用户名,用户名,密码(第三种情况)

还有很多。我正在尝试编写一个函数来处理所有这些情况。这是我获取记录的例程脚本。它获取所有列,这是一组40个字段。

public static List<vsk_users> FetchRecords(MemberEntity entity)
{
    using (var entities = new vskdbEntities())
    {
         IQueryable<vsk_users> Query = entities.vsk_users
        .Where(p => p.userid == entity.UserID);
         return Query.ToList();
    }
}

如何编写一个select表达式,它可以处理几乎任何类型的列请求,而不是为每个自定义列选择编写相同的函数?

我会使用像 FetchRecords( - param - )这样的方法来获取我想要/通过param对象的列。

1 个答案:

答案 0 :(得分:0)

我确信它是可行的,但是你会在复杂性和性能方面付出很高的代价,因为你必须使用反射并构建动态表达式来处理查询的动态特性。您还必须将动态结果的映射构建到vsk_users类项目。

如果您对这种复杂性不感兴趣,更简单的方法可能是使用较低级别的Entity SQL来构建具有自定义列,参数等的SQL查询字符串,然后自己映射到vsk_users

在此处查看如何使用数据读取器执行参数化ESQL语句和读取数据:

http://msdn.microsoft.com/en-us/library/vstudio/bb738684%28v=vs.100%29.aspx

映射应该是直截了当的,性能应该非常好。