【发布时间】:2015-03-04 12:18:05
【问题描述】:
我正在尝试运行此查询,但它返回错误:base = {"Local sequence cannot be used in LINQ to SQL implementations of query operator except the Contains operator."} 我不明白这个消息。该语句确实使用 th Contains 运算符。我做错了什么?
DataClassOnSiteV3DataContext OnSiteV3 = new DataClassOnSiteV3DataContext();
var eventTable = (from s in OnSiteV3.SQLPendingEvents
from r in OnSiteV3.RepairCodes.Where(o => s.EventType == o.KeyRepairCode).DefaultIfEmpty()
from a in OnSiteV3.RepairCodes.Where(o => o.Type == r.KeyRepairCode).DefaultIfEmpty()
select new { SQLPendingEvent = s, RepairCode = r, Answers = a });
eventTable = eventTable.Where(r => r.SQLPendingEvent.EventCode == _eventCode && r.SQLPendingEvent.EventDateTime > _EventDateTime);
if (CheckBox1.Checked)
{
string someCommaSeparatedStrings = "Fail,fail,Failed,failed";
var stringsToCheck = someCommaSeparatedStrings.ToLower().Split(',').ToList();
var newTable = eventTable.Where(r => stringsToCheck.Any(stringToCheck =>
r.RepairCode.Description.Contains(stringToCheck))); *** ERROR OCCURS HERE
eventTable = newTable;
}
【问题讨论】:
-
错误消息中提到的本地序列可能是
stringsToCheck(以及从中检索到的任何内容),它被传递给eventTable.Where(从中获取一条SQL语句需要生成)。 -
这行得通:eventTable = eventTable.Where(o => o.SQLPendingEvent.EventText.ToLower().Contains("fail"));