1
私は現在.NET 4.5のASP.NETアプリケーションを開発中です。ASP.NETフィルタIQueryableでカスタム式
- MainProject
- サブプロジェクト
MainProject
sおよびSubProject
sが、異なる特性を持っているが、一般的に1つの性質を持っている。現在、私はIQueryable
を使用して、私のデータベースから2つのビューの結果を取得していますObjectNumber
、これはインターフェイスISearchResult
で定義しました。
同じコードを2回書くのではなく、両方のビューの結果を1つの方法でフィルタリングするExpressionを作成したいと思います。
マイビュー結果のクラスとインタフェース
は、次のようになります。public interface ISarchResult
{
int ID { get; set; }
string ObjectNr { get; set; }
}
public class MainProject : ISearchResult
{
public int ID { get; set; }
public DateTime? CreationDate { get; set; }
public string Title { get; set; }
public string ObjectNr { get; set; }
}
public class SubProject : ISuchResultat
{
public int ID { get; set; }
public string ObjectNr { get; set; }
public short State { get; set; }
public int? Anything { get; set; }
public int? Something { get; set; }
}
クラスの後ろに私のコードでは、私はこのようになります私のフィルタ方法、あります
private IQueryable<MainProject> FilterObjectNumbers(IQueryable<MainProject > result)
{
var objectNumbers = this.objectNrField.Text.Split(',').Select(objNr => objNr.Trim()).Where(t => !string.IsNullOrEmpty(t)).ToList();
if (objectNumbers.Count > 0)
{
var projectIDs = objectNumbers.Select(objNr => Util.StringToInt(objNr)).Where(objNr => objNr > 0).ToList();
result = result.Where(i => objectNumbers.Contains(i.ObjectNr) || projectIDs.Contains(i.PK_ID));
}
return result;
}
あなたはどのように知っていますがこのメソッドをクエリ式に変換して、のタイプをMainProject
に、SubProject
をフィルタリングしますか?
このExpression Filterメソッドを拡張メソッドに入れることはできますか?
恐ろしいを使用することができます
ISarchResult
制約で、一般的な拡張メソッドを作成します!ありがとう、まさに私が探していたもの:)) –