ですから、私が持っているいくつかのデータを並べ替えるのに少し問題があります。Telerikグリッドには、個人またはユニット(人々のグループ)の名前を表示するRequestorという列があります。問題は、リクエスターにはデータを取得できる2つのソースがあることです。これが2つの情報源です。
1.)RequestorId:これはCustomerというテーブルへの外部キーです。ここでは、フルネームを含むユーザーのすべてのデータを保存します。このフィールドはnullになる可能性があります。
2.)UnitId:これはUnitsと呼ばれるテーブルへのもう1つの外部キーです。ここでは、ユニットのすべてのデータ、特に名前を保存します。このフィールドはnullになる可能性があります。
ロジックは次のとおりです。
//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フィールドを使用する必要がなくなったことがわかりました。これにより、データは2つの領域に制限されます。ただし、処理にはまだ1分かかります。