public User getByField(string field, string stringToFilter)
{
string fieldToReturn;
switch (field)
{
case "id":
fieldToReturn = "u.pk_user_id";
break;
case "username":
fieldToReturn = "u.user_username";
break;
}
var result = (from u in dc.Users
where fieldToReturn == stringToFilter
select fieldToReturn).Single();
return result;
}我正在尝试使用switch case为我的所有字段创建一个getter,因为否则我将不得不创建许多getter(这里的case比这里显示的更多)。但是当我试图返回结果时,它告诉我它是一个字符串,而不是一个用户。我想这是因为我在LINQ查询中使用了一个字符串,但我试图解决它,但不知道该怎么做。
发布于 2011-11-29 22:09:00
在this article中,作者解释了如何使用Dynamic Query Library (download)实现类似的操作。
发布于 2011-11-29 22:25:37
创建一个参数为User的Func并返回一个布尔值。然后根据需要使用的字段创建此Func。当您调用where时,传递这个创建的Func。
public User getByField(string field, string stringToFilter)
{
Func<User, bool> wherePred = null;
switch (field)
{
case "id":
wherePred = u => u.pk_user_id == stringToFilter;
break;
case "username":
wherePred = u => u.user_username == stringToFilter;
break;
}
var result = dc.Users.Where(wherePred).Single();
return result;
}https://stackoverflow.com/questions/8312046
复制相似问题