我想做这样的事情:
string test = alarmType;
db.Alarms.Where(alarmType.Contains(m => m.Type)).ToList();
但这不起作用。我该怎么做这样的查询?这是使用纯SQL的唯一方法吗?
UPD
我试图找出记录是否是"测试"的子串,而不是对话。
答案 0 :(得分:3)
你必须扭转这种状况:
var query = db.Alarms
.Where(a => alarmType.Contains(a.Type))
.ToList();
但是,您的代码示例令人困惑,如果alarmType
是一个字符串,我不知道您正在尝试实现的目标。
string test = alarmType;
更新:如果你正在使用LINQ-To-Sql,并且想要找到Type
是alarmType
的子字符串的所有记录,你可以使用:
var query = db.Alarms
.Where(a => SqlMethods.Like(alarmType, string.Format("%{0}%", a.Type)))
.ToList();
答案 1 :(得分:0)
尝试以下
string test = alarmType;
var result = db.Alarms.Where(m => alarmType.Contains(m.Type)).ToList();
答案 2 :(得分:0)
您的LINQ查询格式不正确。你有:
db.Alarms.Where(alarmType.Contains(m => m.Type)).ToList();
因此,您传递给Contains
的参数是一个lambda,它不是Contains
所需的,
Likeiwse,Contains
会返回bool
,因此您已将bool
传递给Where
,这也不是它所采用的参数类型。
你想要的是将lambda传递给Where
,如下所示:
db.Alarms.Where(m => alarmType.Contains(m.Type)).ToList();
注意现在Where
和Contains
的传递方式都是正确类型的参数。