パラメータのタイプは次のとおりです。
System.Linq.Expressions.Expression<Func<T, bool>> find
つまり、述語 ("where" 句) を使用でき、述語のみを使用できます。したがって、そこに渡すことができる唯一のビットはフィルターです。
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
)
それを行う1つの方法は次のとおりです。
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();