我从几天开始浏览各种解决方案,但没有人帮助过我。我想要获取
我:用户名,用户名,电子邮件(一个案例)
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对象的列。
答案 0 :(得分:0)
我确信它是可行的,但是你会在复杂性和性能方面付出很高的代价,因为你必须使用反射并构建动态表达式来处理查询的动态特性。您还必须将动态结果的映射构建到vsk_users类项目。
如果您对这种复杂性不感兴趣,更简单的方法可能是使用较低级别的Entity SQL来构建具有自定义列,参数等的SQL查询字符串,然后自己映射到vsk_users
。
在此处查看如何使用数据读取器执行参数化ESQL语句和读取数据:
http://msdn.microsoft.com/en-us/library/vstudio/bb738684%28v=vs.100%29.aspx
映射应该是直截了当的,性能应该非常好。