我尝试使用下面的代码谓词建设者:C#谓词生成器不工作
public ListResults<DBAccountDetail> GetAccountDetail(string[] salesForceKey)
{
try
{
using (var c = new SalesForceDataContext())
{
var predicate = PredicateBuilder.False<DBAccountDetail>();
foreach (var keyword in salesForceKey)
{
var temp = keyword;
predicate = predicate.Or(p => p.Id.Contains(temp));
}
var lret = c.DBAccountDetails.AsQueryable().Where(predicate).ToList();
return new ListResults<DBAccountDetail>(lret);
}
}
catch (Exception ex)
{
LogError("GetLegacyRateLetters()", ex);
return new ListResults<DBAccountDetail>(ex);
}
}
的问题是,在这条线:
predicate = predicate.Or(p => p.Id.Contains(temp));
p.Id
不会智能感知并抛出一个编译错误:
No overload for method 'Or' takes 1 arguments
DBAccountDetail.Id是什么类型?如果它是一个int,我会问你期望`p.Id`如何“包含”一个字符串? – StriplingWarrior 2011-01-13 23:07:05
这是一个字符串。我实际上想要使用:(p => p.Id == temp) – 2011-01-13 23:15:02
请粘贴您获得的完整错误。据我所知,应该工作。 – 2011-01-13 23:17:46