首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Getter函数有没有开关开关?

Getter函数有没有开关开关?
EN

Stack Overflow用户
提问于 2011-11-29 22:04:55
回答 2查看 2.1K关注 0票数 2
代码语言:javascript
复制
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查询中使用了一个字符串,但我试图解决它,但不知道该怎么做。

EN

回答 2

Stack Overflow用户

发布于 2011-11-29 22:09:00

this article中,作者解释了如何使用Dynamic Query Library (download)实现类似的操作。

票数 5
EN

Stack Overflow用户

发布于 2011-11-29 22:25:37

创建一个参数为User的Func并返回一个布尔值。然后根据需要使用的字段创建此Func。当您调用where时,传递这个创建的Func。

代码语言:javascript
复制
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;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8312046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档