包含LINQ查询中的语句

时间:2014-06-02 11:03:17

标签: c# linq asp.net-mvc-4

我想做这样的事情:

string test = alarmType;
db.Alarms.Where(alarmType.Contains(m => m.Type)).ToList();

但这不起作用。我该怎么做这样的查询?这是使用纯SQL的唯一方法吗?

UPD
我试图找出记录是否是"测试"的子串,而不是对话。

3 个答案:

答案 0 :(得分:3)

你必须扭转这种状况:

var query = db.Alarms
    .Where(a => alarmType.Contains(a.Type))
    .ToList();

但是,您的代码示例令人困惑,如果alarmType是一个字符串,我不知道您正在尝试实现的目标。

string test = alarmType;

更新:如果你正在使用LINQ-To-Sql,并且想要找到TypealarmType的子字符串的所有记录,你可以使用:

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();

注意现在WhereContains的传递方式都是正确类型的参数。