我有以下字符串 3,9 ,我想在其中查找以下数据库表中的2个值(3和9)
因此,如果我的字符串仅包含数字3,则我的查询应该返回所有5行,如果我发送的数字9,它应该仅返回2行,如果我发送3,9,它也应该返回所有5行
我在课堂上编写代码遇到困难
<Response>
...
</Response>
感谢任何帮助
答案 0 :(得分:0)
我想t = GetAll()
是一个带有行的列表。
因此,您必须以与拆分t.AproversIds
参数相同的方式拆分每个ApproversId
列值,并检查是否存在任何交集
var ApproversIdL = ApproversId.Split(',');
t = t.Where(s => s.AproversIds.Split(',').Any(p => ApproversIdL.Contains(p) ));
答案 1 :(得分:0)
我不知所措,我们如何搜索多个值并提出了这个建议。 :P
Dictionary<int, string> data = new Dictionary<int, string>();
data.Add(1, "3,97");
data.Add(2, "9,3");
data.Add(3, "3");
data.Add(4, "3");
data.Add(5, "3,4");
//search string with comma separated value
string searchItems = "9";
var tempSearchItems = searchItems;
searchItems = searchItems.Replace(",", "|").Replace(" ", "");
//Pattern for the regex
string pattern = @"\b(" + searchItems + @")\b";
//get the result
var test = data.Where(d => Regex.Matches(d.Value, pattern).Count > 0).ToList();
让我知道是否有帮助
答案 2 :(得分:0)
如果使用SQL Server,则可以使用SqlMethods.Like将数据库结果集过滤为可管理的数据子集,然后可以使用RegEx提取内存中的项目。
答案 3 :(得分:0)
这是您可以参考的有效演示
public async Task<IActionResult> Test()
{
var ApproversId = "3,9";
var t = (from a in _context.Answers
select a).ToList();
if (!string.IsNullOrEmpty(ApproversId))
{
List<string> ApproversIdL = ApproversId.Split(',').ToList();
t = t.Where(s => ApproversIdL.Any(al=>s.AproversIds.Contains(al))).ToList();
}
return View();
}