パラメータは、タイプのものである:
System.Linq.Expressions.Expression<Func<T, bool>> find
それは述語( "" 句)、およびのみ述語を取ることができることを意味します。
x => x.ConfigurationReference == "172.16.59.175"
はそれがなるように、あなたは、FindEntities
に残りのコードを追加する必要があり、あなたがやりたい:したがって、フィルタは、あなたが渡すことができる唯一のビットがあり
var val = dataContext.GetTable<T>().Where(find)
.OrderByDescending(x => x.Date).Take(100).ToList<T>();
あなたは
はそれは次のようになりませんでした
一つの方法
(Take
が本当に後OrderByDescending
べきであることにも注意してください):
public static List<T> FindEntities<T>(TrackingDataContext dataContext,
System.Linq.Expressions.Expression<Func<T, bool>> find,
Func<IQueryable<T>, IQueryable<T>> additonalProcessing = null
) where T : class
{
var query = dataContext.GetTable<T>().Where(find);
if(additonalProcessing != null) query = additonalProcessing(query);
return query.ToList<T>();
}
およびコール:
var data = FindEntities(db, x => x.ConfigurationReference == "172.16.58.175",
q => q.OrderByDescending(x => x.Date).Take(100));
をしかし、率直に言って、私はこれのポイントはどうなるかわからない...呼び出し側がFindEntities
を使用せずに、ローカルでより便利にそれをすべて自分で行うことができますまったく。ジャスト:
var data = db.GetTable<T>()
.Where(x => x.ConfigurationReference == "172.16.58.175")
.OrderByDescending(x => x.Date).Take(100).ToList();
かさえ:
var data = db.SomeTable
.Where(x => x.ConfigurationReference == "172.16.58.175")
.OrderByDescending(x => x.Date).Take(100).ToList();
か、単に:
var data = (from row in db.SomeTable
where row.ConfigurationReference == "172.16.58.175"
orderby row.Date descending
select row).Take(100).ToList();
あなたの例外ハンドラがところで、有益な何も達成していない、といくつかの悪いことを(それはスタックトレースを失う)やるん。 'try' /' catch'を削除して、 'FindEntities'メソッド全体をかなり冗長に見せます –