首页 > 解决方案 > 在 C# 中将字符串转换为比较操作

问题描述

我的 asp.net 应用程序中有 html 选择表单:

<select class="form-control" name="ageOption" asp-for="AgeOption"  value="Equals">
        <option>Equals</option>
        <option>More Than</option>
        <option>Less Than</option>
    </select>

将来,我想创建一个查询,将这些值转换为比较操作

    public async Task<IActionResult> Find(int age, string ageOption)
    {
         var users = new List<User>();
         await Task.Run(() => users = session.Query<User>()
                        .Where(u => u.Age **ageOption** age);
    }

标签: c#asp.net.netasp.net-mvclinq

解决方案


由于您使用的是数据库查询,因此您可以修改查询,然后再运行它:

public async Task<IActionResult> Find(int age, string ageOption) {
    // var users = new List<User>(); // don't do this - it creates an empty List that you immediately replace below
    List<User> users;

    var q = session.Query<User>();

    switch (ageOption) {
        case "Equal":
            q = q.Where(u => u.Age == age);
            break;
        case "More":
            q = q.Where(u => u.Age > age);
            break;
        case "Less":
            q = q.Where(u => u.Age < age);
            break;
    }

    await Task.Run(() => users = q.ToList());
}

推荐阅读