C# 操作员'&&';无法应用于类型为';lambda表达式';和';lambda表达式
我想检索所有具有IP或MAC地址的记录,或者如果其中任何一个为空,那么我编写了如下方法:-C# 操作员'&&';无法应用于类型为';lambda表达式';和';lambda表达式,c#,entity-framework,lambda,C#,Entity Framework,Lambda,我想检索所有具有IP或MAC地址的记录,或者如果其中任何一个为空,那么我编写了如下方法:- public IQueryable<Technology> AdvanceSearch(string ip = null, string mac = null, int techtype) { var relatedresourcesID = entities.NetworkInfoes .Where((a =>
public IQueryable<Technology> AdvanceSearch(string ip = null, string mac = null, int techtype)
{
var relatedresourcesID = entities.NetworkInfoes
.Where((a => String.IsNullOrEmpty(ip) || a.IPADDRESS.StartsWith(ip)))
.Where(a2 => String.IsNullOrEmpty(mac) || a2.MACADDRESS.StartsWith(mac)).Select(a3=>a3.WORKSTATIONID);
//code goes here
var relatedresourcesID = entities.NetworkInfoes
.Where((a => String.IsNullOrEmpty(ip) || a.IPADDRESS.StartsWith(ip)) && (a2 => String.IsNullOrEmpty(mac) || a2.MACADDRESS.StartsWith(mac)) )
.Select(a3=>a3.WORKSTATIONID);
但我将得到以下错误:-
错误18运算符“&&”不能应用于“lambda”类型的操作数
表达式“和”lambda
表达式“C:\Users\Administrator\documents\visual studio”
2012\Projects\TMS\TMS\Models\Repository.cs 914 24 TMS
您应将单个输入传递到where运算符:
var relatedresourcesID = entities.NetworkInfoes
.Where(a => (String.IsNullOrEmpty(ip) || a.IPADDRESS.StartsWith(ip)) &&
(String.IsNullOrEmpty(mac) || a.MACADDRESS.StartsWith(mac)))
.Select(a => a.WORKSTATIONID);
注意:您不需要在每个运算符中指定新的参数名称-这些作用域不重叠
另外,不要忘记声明性查询语法,它更具可读性(IMHO),并且根本不会使用lambdas:
var relatedresourcesID =
from a in entities.NetworkInfoes
where (String.IsNullOrEmpty(ip) || a.IPADDRESS.StartsWith(ip)) &&
(String.IsNullOrEmpty(mac) || a.MACADDRESS.StartsWith(mac))
select a.WORKSTATIONID;