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,我会检查它。我非常感谢