我有一個表說具有以下字段類別:選擇特定的子記錄在LINQ to SQL的C#
CAT_ID,cat_name和Cat_desc
我也有另一臺產品與下列字段:
pro_id,CAT_ID,pro_name和pro_desc,is_finished
通常情況下,如果我選擇一個類別與LINQ to SQL中,它返回與所有相關的產品類別。
但是我想要選擇一個類別,但返回的產品應該只是產品的is_finished值是真的。
任何建議/代碼示例將不勝感激。
我有一個表說具有以下字段類別:選擇特定的子記錄在LINQ to SQL的C#
CAT_ID,cat_name和Cat_desc
我也有另一臺產品與下列字段:
pro_id,CAT_ID,pro_name和pro_desc,is_finished
通常情況下,如果我選擇一個類別與LINQ to SQL中,它返回與所有相關的產品類別。
但是我想要選擇一個類別,但返回的產品應該只是產品的is_finished值是真的。
任何建議/代碼示例將不勝感激。
您需要join表:
select * from product p
left join Category c on c.cat_id = p.cat_id
where c.cat_name = 'yourcategory' and p.is_finished = 1
在LINQ to SQL:
var query = from product in products
join category in categories on category.cat_id = product.cat_id
select new { product.is_finished = true, category.cat_name = "yourcategory" };
謝謝你的迴應,但我不使用行內的SQL,我正在尋找一種方法來實現這與LINQ到SQL對象。 – 2014-09-05 16:59:49
@ Al-Mustapha我的答案是LINQ到SQL ... – ElGavilan 2014-09-05 17:00:39
@ElGavilan:你的LINQ與你的SQL不匹配。你正在使用'select'語句,你應該使用where語句。 – StriplingWarrior 2014-09-05 20:01:47
這可能是你在問什麼是最明智的辦法:
var query = from product in products
select new {
product,
finishedCategories = product.categories.Where(c => c.is_finished)
};
這會創建一個匿名類型,其中包含您正在查找的數據。請注意,如果您訪問.product.categories
,您仍然可以獲得該產品的所有類別(延遲加載)。但是,如果您使用.finishedCategories
,您只需獲得已完成的類別。
我理解並非常感謝您的回覆。顯然,我要求的太多了,因爲我希望修改它的產品類別本身,使其具有真正的is_finished。 – 2014-09-05 17:59:06
@ Al-Mustapha這個答案和我留下的答案完全相同。這可能是最好的方法。不確定斷開連接的位置在哪裏...... – ElGavilan 2014-09-05 18:19:14
@ Al-Mustapha:你要求做的事情可能是個壞主意,就是這樣。比方說,你將某個'產品'傳遞給某個輔助方法,並且該輔助方法需要對產品的所有類別進行一些操作:無法知道該特定'產品'是否被加載到「特殊「的方式,所以只有某些類別存在。相反,重新考慮你的設計,並願意在這種情況下引入DTO層。從長遠來看,您的代碼不易出錯並且更易於維護。 – StriplingWarrior 2014-09-05 20:00:14
你不想把它設置爲True或只得到那個是真的? – 2014-09-05 16:59:34
我想獲得具有is_finished值true的關聯產品的類別。 – 2014-09-05 17:01:41
您是否在尋找至少有一個成品的所有類別?在這種情況下看看任何運算符 – Pleun 2014-09-05 18:50:12