包含LINQ查询中的语句

本文关键字:语句 查询 LINQ 包含 | 更新日期: 2023-09-27 18:06:16

我想这样做:

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

但这不起作用。我如何查询?这是使用纯SQL的唯一方法吗?


乌利希期刊指南我试图找出记录是否是"测试"的子字符串,而不是相反。

包含LINQ查询中的语句

你必须反转条件:

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

试试下面的

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

您的LINQ查询格式不正确。你有:

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

所以你传递给Contains的参数是一个lambda,而不是Contains接受的,

同样,Contains返回一个bool,所以你已经传递了一个boolWhere,这也不是它接受的参数类型。

你想要的是传递一个lambda给Where,像这样:

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

请注意,现在WhereContains都被传递了正确类型的参数。