你好,我有一个问题,我不能解决它 3 天。我在这里和谷歌上发了很多帖子,但我找不到解决方案。
在 db 我有列“Gene” - nvarchar(350) 其中包含例如:
row 1: 1,4,32,11
row 2: 32,11
row 3: 1
row 4: 4,56,1,23
row 5: 4
从 checkboxlist 我检查这个值: 1,4 添加到
List<string> gnr = new List<string>();
我想要的结果是第 1 行和第 4 行。
我制作了(取自stackoverflow)代码,结果是第3行和第4行:
var result = from m in db.Movies
where gnr.Contains(m.Gener)
select m;
结果是第 1 行、第 3 行、第 4 行和第 5 行的代码:
foreach (string term in gnr)
{
var trb = db.movies.Where(o => o.Gener.Contains(term));
}
使用 Ole DB 我可以做到,但使用 LINQ 我做不到这里的代码:
List<string> Gener = new List<string>();
Gener = Action,Comedy
StringBuilder builder = new StringBuilder();
string lastItem = Gener[Gener.Count - 1];
// Here I made string Which I'll add to cmd string
foreach (string safePrime in Gener)
{
if (safePrime != lastItem)
{
builder.Append("((gener LIKE '%" + safePrime + "%')) AND").Append(" ");
}
else
{
builder.Append("((gener LIKE '%" + safePrime + "%')) ORDER By ID DESC").Append(" ");
}
}
string dbSelect = builder.ToString();
//The result from loop
dbSelect = "((GenerLIKE '%Action%')) AND ((GenerLIKE '%Comedy%')) ORDER By ID"
//Add dbSelect to exist cmd
Cmd1.CommandText = "SELECT * FROM movies WHERE " + dbSelect;
这里的结果就是我想要的 LINQ,选择所有动作和喜剧的电影谢谢你花时间,我会非常感谢你的帮助。对不起我的英语我希望它是可读的。