所以我在对我拥有的一些数据进行排序时遇到了一点问题。在 Telerik Grid 中,我有一个名为 Requestor 的列,它显示一个人或单位(一群人)的名称。问题是,Requestor 有两个可以从中获取数据的来源。这是两个来源。
1.) RequestorId:这是一个名为 Customer 的表的外键。在这里,我存储了用户的所有数据,包括他们的全名。顺便说一句,此字段可以为空。
2.) UnitId:这是一个名为 Units 的表的另一个外键。在这里,我存储了 Units 的所有数据,尤其是它们的名称。顺便说一句,此字段可以为空。
这是逻辑:
//Entity class that contains all the data for my grid
var purchaseOrders = _purchaseOrders.GetPurchaseOrders();
//Key is Id of PurchaseOrders, Value is name of requestor
var dictionary = new Dictionary<int, string>();
foreach (var purchaseOrder in purchaseOrders)
{
if (purchaseOrder.requestorId != null)
dictionary.add(purchaseOrder.Requestor.Fullname);
else
dictionary.add(purchaseOrder.unit.Fullname);
}
dictionary.orderby(x => x.value).ToDictionary(x => x.Key, x.Value);
var tempPurchaseOrders = new List<PurchaseOrder>();
foreach (var item in dictionary)
{
tempPurchaseOrders.Add(purchaseOrders.Where(x => x.Id == item.Key).FirstOrDefault());
}
purchaseOrders = tempPurchaseOrders.AsQueryable();
return purchaseOrders;
这个逻辑根据我想要做的事情返回一个有序列表,但是,问题是处理所需的时间。处理需要 1 分钟。这显然很可怕。反正有没有优化这个?我在返回网格后切断了源,因为没有逻辑方法可以事先真正切断它。
任何帮助,将不胜感激。谢谢。
编辑:我发现我不再需要使用 RequestName 字段。这将数据限制在两个领域。不过还有一分钟的时间来处理。