Linq模糊查询
这句代码如何写出模糊查询。
List<Objects> objs;
IEnumerable<Objects> fiterObjs = objs.Where(x => x.ObjectName==this.acbObjectName.Text.Trim());
我试了这样子写,可是不行
IEnumerable<Objects> fiterObjs = objs.Where(x => x.ObjectName.Contains(this.acbObjectName.Text.Trim()));
------最佳解决方案--------------------SqlMethods.Like 是生成sql语句时,应该 不能用。
既能 ObjectName可能为null,加上判断 。
IEnumerable<Objects> fiterObjs = objs.Where(x => x.ObjectName!=null&&x.ObjectName.Contains(this.acbObjectName.Text.Trim()));
------其他解决方案--------------------提示:
未将对象引用设置到对象的实例。
但是上面的那个精确查询可以的。
------其他解决方案--------------------IQueryable <T>接口本来就没有Contains方法
from o in db.Orders
where (
new string[] { "A", "B", "C" })
.Contains(o.ID)
------其他解决方案--------------------可以的,没有问题的,再检查一下。
------其他解决方案--------------------光看代码 是没有问题的。
未将对象引用设置到对象的实例 是指哪个? 调试一下
------其他解决方案--------------------我改写成 var fiterObjs = from i in objs where i.ObjectName.Contains(this.acbObjectName.Text.Trim()) select i;也是一样的。
郁闷
------其他解决方案--------------------我测试了一下contans方法,搞一个静态数据源:
class Program
{
static void Main(string[] args)
{
List<User> lstUesr = new List<User>() { new User{Id="sdf",Name="wfuc"},
new User{Id="sfdds",Name="sdfwer"},
new User{Id="iuy",Name="ljk"},
new User{Id="iuy",Name="ab"},
new User{Id="iuy",Name="abc"},
new User{Id="iuy",Name="eabc"},
new User{Id="iuy",Name="rabre"},
new User{Id="iuy",Name="tabtrc"}
};
IEnumerable<User> query = lstUesr.Where(x => x.Name.Contains("ab"));
foreach (User item in query)
{
Console.WriteLine(item.Name);
}