Dan*_*iel 3 .net c# linq linq-to-sql
尝试创建Lambda表达式以从包含七个Guid值中的任何一个的数据库中选择记录.
当我尝试以下内容时:
searchedOpps = searchedOpps.Where(s => s.STAGEID == stageAGuid && stageAPlusGuid && //etc);
Run Code Online (Sandbox Code Playgroud)
我得到一个Operator '&&' cannot be applied to operands of type 'bool' and 'System.Guid',相同的||(不确定哪个或者我应该使用这些运算符)
如果我尝试:
searchedOpps = searchedOpps.Where(s => s.STAGEID == stageAGuid);
searchedOpps = searchedOpps.Where(s => s.STAGEID == stageAPlusGuid);
Run Code Online (Sandbox Code Playgroud)
什么都没有回来
有人可以帮我这个吗?
你可以尝试这个,如果你有一些OR操作符的键,在C#中||,用于样本:
searchedOpps = searchedOpps.Where(s => s.STAGEID == stageAGuid
|| s.STAGEID == stageAPlusGuid));
Run Code Online (Sandbox Code Playgroud)
但是,如果您有一个键列表,您可以尝试使用该Contains方法,以获取示例:
List<Guid> guids = /* get your keys from somewhere */;
searchedOpps = searchedOpps.Where(s => guids .Contains(s.STAGEID));
Run Code Online (Sandbox Code Playgroud)
如果您正在使用linq到数据库(linq-to-sql,entity-framework,nhibernate等),它将生成一个IN带有所有键的运算符的查询.
在第二个示例中,您正在寻找带STAGEID == stageAGuid AND的 对象STAGEID == stageAPlusGuid.你没有得到任何结果也就不足为奇了.
在您的第一个示例中,您只需要重复您要比较的键:
searchedOpps = searchedOpps
.Where(s => s.STAGEID == stageAGuid
|| s.STAGEID == stageAPlusGuid [...]);
Run Code Online (Sandbox Code Playgroud)
编写它的方式,编译器尝试bool通过' ORing'获得a bool(来自第一次比较)和a GUID(后面的值&&).
| 归档时间: |
|
| 查看次数: |
1191 次 |
| 最近记录: |