c# - 在 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);
}
解决方案
由于您使用的是数据库查询,因此您可以修改查询,然后再运行它:
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());
}
推荐阅读
- sql-server - SQL Server 中 varchar(n) 和 varchar(m) 之间的效率差异——这与 varchar(n) 和 varchar(MAX) 无关
- node.js - Docker 镜像构建卡在 ReactJS 的“npm install”
- envoyproxy - Envoy Sidecar 代理会话持久化?
- vb.net - 如何从 vb.net 中的调用对象访问数据
- matlab - 如何在 Octave 中转换 Matlab 的 Tiff 函数?
- r - 如何捕获所有成功的会话?
- apache-spark - Common Crawl:pyspark,无法使用
- reactjs - 使用 Apollo Provider 的钩子
- javascript - 我可以在箭头函数中调用这个函数吗?
- ios - 如何在 SwiftUI 中删除重复的集合元素