リストを利用してリストメンバーシップをテストする方法があるかどうか知りませんか?たとえば、タイプがList<Enums.RebateType>
のRebatesというプロパティを持つMembershipというクラスがあります。ラムダ式を使用してテストして、そのリストに特定のタイプのリベートが含まれているかどうかを確認する必要があります。次アップ嘲笑SQL構文に似た何かが1つのラムダ式を介して行うことができれば、私は思っていたリストのテスト<T>リストを使用する<T>
return Membership.Rebates.Exists(rebate =>
(rebate.RebateType == Enums.RebateType.A &&
rebate.RebateStatus == Enums.RebateStatus.Approved) ||
(rebate.RebateType == Enums.RebateType.B &&
rebate.RebateStatus == Enums.RebateStatus.Approved));
:代わりに次の操作を行うことの
return Membership.Rebates.Exists(rebate =>
rebate.RebateType == Enums.RebateType.A &&
rebate.RebateStatus == Enums.RebateStatus.Approved);
を次のように私のorginalラムダ式です。
SELECT COUNT(*)
FROM Membership.Rebates
WHERE RebateType IN (ValidRebateTypes) AND Approved = true
ValidRebateTypesまま現在I、すなわちValidRebateTypes =(Enums.RebateType.A、Enums.RebateType.B)をテストしていList<Enums.RebateType>
あります。
次のように私は現在持っている回避策は次のとおりです。
bool exists = false;
foreach (Enums.RebateType rebateType in ValidRebateTypes())
{
exists = Membership.Rebates.Exists(
rebate =>
rebate.RebateType == rebateType &&
rebate.RebateStatus == Enums.RebateStatus.Approved);
if (exists) { break; }
}
return exists;
彼が望むのは、(カウントではなく)存在しているかどうかを知ることだけで、 '.Count()'の代わりに '.Any()'を使うので、シバン全体を通過するのではなく最初のマッチで終了することができます。 –
良いキャッチは、私は単に彼のSQLを複製していた。 – Marc
また、Where with Anyを置き換え、Countをすべて失うだけです。 –