我正在尝试执行linq to entity语句,其中一个条件是包含通配符%
我有以下代码,如果我从2个组合框中删除%,我会得到结果
var SLogged = from p in OEEEntity.Scrappages
where p.Date >= StartDate
where p.Date <= EndDate
where p.LogType.Contains(cmbType.Text)
where p.ScrapCode.Contains(cmbCode.Text)
orderby p.Date ascending
select p;
包含%的值是cmbType和cmbCode
任何人都知道如何做到这一点。
答案 0 :(得分:2)
.Contains("aaa")
相当于LIKE '%aaa%'
.StartsWith("aaa")
相当于LIKE 'aaa%'
.EndsWith("aaa")
相当于LIKE '%aaa'
因此您无需手动添加'%'。
答案 1 :(得分:0)
使用任何返回bool值的字符串操作:
var myString = "This is some text";
myString.Contains("some");
答案 2 :(得分:0)
处理通配符的最佳方法是使用PatIndex
var SLogged = (from p in OEEEntity.Scrappages
where p.Date >= StartDate
&& p.Date <= EndDate
&& SqlFunctions.PatIndex(cmbType.Text, p.LogType) > 0
&& SqlFunctions.PatIndex(cmbCode.Text,p.ScrapCode) > 0
orderby p.Date ascending
select p).ToList();
答案 3 :(得分:0)
这不是回答问题,因为OP实际上没有在OP中提出他的问题。
var queryText = cmbType.Text;
var SLogged = from p in OEEEntity.Scrappages
where p.Date >= StartDate
where p.Date <= EndDate
where p.LogType.Contains(queryText)
|| string.IsNullOrEmpty(queryText)
where p.ScrapCode.Contains(queryText)
|| string.IsNullOrEmpty(queryText)
orderby p.Date ascending
select p;