Ich versuche Prädikat Builder in dem folgenden Code zu verwenden:C# Prädikat Builder funktioniert nicht
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);
}
}
Das Problem ist, dass auf dieser Linie:
predicate = predicate.Or(p => p.Id.Contains(temp));
p.Id
nicht IntelliSense aus und wirft eine Übersetzungsfehler aus:
No overload for method 'Or' takes 1 arguments
Welcher Typ ist DBAccountDetail.Id? Wenn es ein int ist, würde ich fragen, wie Sie erwarten, dass "p.Id" eine Zeichenkette "enthält"? – StriplingWarrior
Es ist eine Zeichenfolge. Ich möchte tatsächlich verwenden: (p => p.Id == temp) –
Bitte fügen Sie den vollständigen Fehler, den Sie bekommen. Soweit ich das beurteilen kann, sollte das funktionieren. –