C# 包含LINQ查询中的语句
我想这样做:C# 包含LINQ查询中的语句,c#,linq,asp.net-mvc-4,C#,Linq,Asp.net Mvc 4,我想这样做: string test = alarmType; db.Alarms.Where(alarmType.Contains(m => m.Type)).ToList(); 但这不起作用。我怎样才能提出这样的质询呢?这是使用纯SQL的唯一方法吗 UPD 我试图找出记录是否是“测试”的子字符串,而不是相反。您必须反转条件: var query = db.Alarms .Where(a => alarmType.Contains(a.Type)) .ToList
string test = alarmType;
db.Alarms.Where(alarmType.Contains(m => m.Type)).ToList();
但这不起作用。我怎样才能提出这样的质询呢?这是使用纯SQL的唯一方法吗
UPD我试图找出记录是否是“测试”的子字符串,而不是相反。您必须反转条件:
var query = db.Alarms
.Where(a => alarmType.Contains(a.Type))
.ToList();
但是,如果alarmType
是一个字符串,我不知道您想要实现什么,那么您的代码示例很混乱
string test = alarmType;
更新:如果您正在使用LINQ To Sql,并且希望查找类型
是报警类型
子字符串的所有记录,则可以使用:
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
,因此您将bool
传递给,其中
,这也不是它所采用的参数类型
您需要将lambda传递给其中
,如下所示:
db.Alarms.Where(m => alarmType.Contains(m.Type)).ToList();
请注意,
Where
和Contains
现在是如何传递正确类型的参数的。我正在尝试查找记录是否是“test”的子字符串,而不是相反。请编辑您的问题,并说明这一点。带有注释“不工作”的代码看起来毫无意义,因此被否决。另外,asp.net mvc
标记在这里是多余的。@Fyodor谢谢,请稍候。@silentfobos:fyi,我已经更新了我的答案。@TimSchmelter谢谢!我试试这个。