根据条件从同一个表中获取两个列值

时间:2011-08-22 10:22:17

标签: c# linq entity-framework linq-to-entities

我有两张桌子:

table product1 with columns:
    product_id 
    prodcut_name
    category_id
another table  categories 
    category_id
    category_name
    category_description

我使用DataGridView填充产品详细信息并且工作正常。

我试图从同一个表中获取两个列值,具体取决于我得到以下代码的相同条件:

string desc = Convert.ToString(selectedRow.Cells["productdescr"].Value);
string productname = Convert.ToString(selectedRow.Cells["productnam"].Value);
string productprices = Convert.ToString(selectedRow.Cells["productprice"].Value);
int  productids = Convert.ToInt32(selectedRow.Cells["productid"].Value);

条件1:

int  categoryids = (from cats in tsg.product1
                    where cats.product_Name.Equals(productname)
                    select cats.category_Id).SingleOrDefault();

条件2:

var catogynames = (from categorytypes in tsg.categories
                   where categorytypes.category_Id.Equals(categoryids)
                   select  categorytypes.category_Name
                  ).SingleOrDefault();

条件3:

var categoprydecription = (from categorytable in tsg.categories
                           where categorytable.category_Id.Equals(categoryids)
                           select categorytable.category_Description
                          ).SingleOrDefault();

我想从条件2 获取categorytypes.category_description以及此categorytypes.category_Name,是否可以合并这两个条件? (条件2和条件3)

1 个答案:

答案 0 :(得分:1)

我认为你可以用这种方式做到这一点

(from categorytable in tsg.categories
where categorytable.category_Id == categoryids
select new {Name=categorytable.category_Name, 
            Description=categorytable.category_Description}).SingleOrDefault();

这将是一个匿名类,包含您想要的类别的名称和描述。