0

以下のように製品リストを取得するlinqクエリを作成しようとしています

DBEntities _context = null;
List<BOMViewModel> lstBOM;  
using (_context = new DBEntities())
{
   ObjectSet<BOMProduct> objBOMProduct = _context.BOMProducts;
   ObjectSet<BOMComponent> objBOMComponent = _context.BOMComponents;
   ObjectSet<Product> objProducts = _context.Products;
     lstBOM = (from BOMProduct in objBOMProduct 
               join BOMComponent in objBOMComponent on BOMProduct.BOMProductKey equals BOMComponent.BOMProductKey
               join products in objProducts on BOMComponent.ProductKey equals products.ProductKey
               where (BOMProduct.LengthKey == 39 )
               select new BOMViewModel
               {
                      ProductKey = BOMComponent.ProductKey,
                      ProductPN = products.ProductPartNum,
                      ProductDesc = products.ProductDesc,
                      ProductPrice = products.ProductPrice,
                      Quantity = BOMComponent.BOMComponentQuantity
                }).ToList();
}
return lstBOM;

このリストを Grid にバインドし、データをグリッドに表示していますが、すべて十分に機能しています。

データベースには、製品の説明がほとんどありません。「ヘッダー」を含むいくつかの説明。「Hdr」が含まれています リストから最初にそれらを表示し、次に残りの他の製品を表示する必要があります。「ヘッダー」または「Hdr」で並べ替えたいと言うことができます。

リストに 25 の項目があるとします。10 項目の説明には「ヘッダー」が含まれ、5 項目の説明には「Hdr」が含まれ、残りの 10 項目には両方の単語が含まれていません。次に、グリッドで、「ヘッダー」、「hdr」、残りのアイテムを含むアイテムを表示する必要があります

そんなことがあるものか???誰かがいくつかの経験を提案してください。

4

1 に答える 1

0

最善ではないかもしれませんが、私は 1 つの方法を考えることができます。クエリ内で条件ステートメントを実行できます。

.OrderBy(x => x.ProductDesc == "Header" ? 1 : x.ProductDesc == "Hdr" ? 2 : 3)
于 2013-07-01T07:33:41.193 に答える