我有一些目前看起來像這樣并在 EF Core 中作業的東西:
DbContext.Computers.OrderByDirection(state.SortDirection,
x => x.Actions.FirstOrDefault(y => y.GetType() == typeof(PingAction) &&
y.History.Any(z => z.Status == Status.Succeeded &&
(DateTime.Now - z.WhenExecuted).TotalMinutes < 10)))
但是,我還需要在x其他地方使用該功能,并且不想多次對其進行硬編碼。如何將該函式保存到變數或其他東西中,并且仍然允許它與 EF 核心的服務器端過濾一起使用,因為這當然會被轉換為 SQL?
更新
簽名OrderByDirection:
public static IOrderedEnumerable<TSource> OrderByDirection<TSource, TKey>(this IEnumerable<TSource> source, SortDirection direction, Func<TSource, TKey> keySelector)
public static IOrderedQueryable<TSource> OrderByDirection<TSource, TKey>(this IQueryable<TSource> source, SortDirection direction, Expression<Func<TSource, TKey>> keySelector)
uj5u.com熱心網友回復:
我認為您可以將運算式提取到與此類似的變數中:
(我只是通過您的屬性名稱猜測類名,它們在您的代碼中并不明顯):
Expression<Func<Computer, Action>> expression = x => x.Actions.FirstOrDefault(
action => action.GetType() == typeof(PingAction) && action.History.Any(
history => history.Status == Status.Succeeded && (DateTime.Now - z.WhenExecuted).TotalMinutes < 10));
DbContext.Computers.OrderByDirection(state.SortDirection, expression);
那么這個運算式可以在其他地方重用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/431238.html
