C# 带OR表达式的Lambda表达式
我有C# 带OR表达式的Lambda表达式,c#,linq,linq-to-sql,linq-to-entities,C#,Linq,Linq To Sql,Linq To Entities,我有DB。从ServiceStack调用中选择语句到一个工作正常的列表。内容如下: List<MyTable> MyData = new List<MyTable>(); MyData = Db.Select<MyClass>().Where(n => n.thisfield.StartsWith("d1")).ToList(); List MyData=new List(); MyData=Db.Select().Where(n=>n.thisf
DB。从ServiceStack调用中选择语句到一个工作正常的列表。内容如下:
List<MyTable> MyData = new List<MyTable>();
MyData = Db.Select<MyClass>().Where(n => n.thisfield.StartsWith("d1")).ToList();
List MyData=new List();
MyData=Db.Select().Where(n=>n.thisfield.StartsWith(“d1”)).ToList();
我只是希望能够用同一个语句来表示AND或a,看起来有点像
List<MyTable> MyData = new List<MyTable>();
MyData = Db.Select<MyClass>().Where((n => n.thisfield.StartsWith("d1")).ToList()
|| n.thisfield.StartsWith("d2")).ToList());
List MyData=new List();
MyData=Db.Select().Where((n=>n.thisfield.StartsWith(“d1”)).ToList()
||n.thisfield.StartsWith(“d2”).ToList();
但是我有语法问题,我的目标是在同一个语句中使用check,检查该字段是否以“D1”
或“D2”
开头。这可能吗?我相信这就是您要寻找的:
List<MyClass> myData = Db.Select<MyClass>(q =>
q.Where(n => n.thisfield.StartsWith("d1") || n.thisfield.StartsWith("d2"));
List myData=Db.选择(q=>
q、 其中(n=>n.thisfield.StartsWith(“d1”)| n.thisfield.StartsWith(“d2”);
StartsWith
返回一个bool
,您正在尝试对其进行ToList
操作。从表达式内部删除ToList
,只需将其添加到Where
子句的括号后。之前的ToList()
没有任何意义MyData=Db.Select()。其中(n=>n.thisfield.StartsWith(“d1”)| | n.thisfield.StartsWith(“d2”).ToList();
注意:.ToList()
在OrmLite中是不必要的,因为Select
总是返回一个列表
。谢谢@mythz,我很感激。是的,这就是我要找的,谢谢@juharr!!@JasonR。根据上的示例,你可能想把你的标准表达式放在Select()中
调用以确保您在数据库级别进行筛选。如果您这样做,正如@mythz所述,ToList()
应该是不必要的。谢谢@StriplingWarrior,我会检查它。我非常感谢