2011-02-25 69 views
0

有一个表,列名等需要帮助形成的LINQ to SQL表达式

Name | ProductID | Price | Category | SubCategory 

我传递一个类别名称为的操作方法,我想回到属于同一行的子类别名称作为传入的类别名称

所以这样的事情,除非这是错误的。

var subcategories = 
     productsRepository.Products 
         .Select(x => x.SubCategory.Where(x.Category == category); 

因此,我可以再与此收集不同的子类别名称:

foreach (string subcategoryName in subcategories.Distinct().OrderBy(x => x)) 

谢谢。

+0

当你谈论'行名'时,你是指'列名'吗? – 2011-02-25 06:39:37

+0

YEah,这些是列名“名称|产品ID |价格|类别|子类别”并且我想提取与我要传入的类别名称在同一行中的子类别名称。 – LaserBeak 2011-02-25 06:43:02

回答

1

你是否在寻找:

var subcategories = productsRepository.Products 
             .Where(x => x.Category == category) 
             .Select(x => x.SubCategory) 
             .Distinct() 
             .OrderBy(x => x); 

在另一方面,它似乎你的数据库不被标准化。

+0

否其未归一化所有或正常的事情:)我只是在试验。按照我的理解,标准化将涉及到通过创建下列表(类别,子类别,产品等)将该表分成相关数据组,然后使用子类别表中的子类别ID主键将产品分配到这些子类别,并依次分配子类别也是类别。 – LaserBeak 2011-02-25 07:42:05

0

我不确定我是否完全理解了这个问题,但是最初是否需要筛选,然后选择列?

var subcategories = 
     productsRepository.Products.Where(x=>x.Category==category) 
         .Select(x => x.SubCategory); 
+0

当然我会这样做的。谢谢你们。我完全不知道有关LinQ语法的脚本,忘记了你先过滤然后从结果中选择。 – LaserBeak 2011-02-25 07:20:46