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;

这个列表我绑定到网格并在网格中显示数据,所有工作都足够好。

在数据库中,我的产品描述很少。其中包含“标题”一些描述。包含“Hdr”我想先从列表中显示它们,然后其他产品需要显示。你可以说我想按“标题”或“Hdr”排序。

假设我在列表中有 25 项,其中 10 项描述包含“标题”,5 项描述包含“Hdr”,其余 10 项不包含这两个词。然后在 grd 它应该显示包含“标题”然后是“hdr”项目的项目,然后是其他项目

这怎么可能???请有人建议一些经验。

4

1 回答 1

0

我可以想到一种方法,尽管它可能不是最好的。您可以在查询中执行条件语句,例如

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