【发布时间】:2010-05-24 18:44:26
【问题描述】:
我害怕问这个问题,因为到目前为止,我了解到我必须在脑海中塞进很多新东西。尽管有所有类似的问题(以及各种各样的答案),但我认为我不会问,因为我已经阅读了裁缝来满足我的具体需求。
我需要使用 LINQ 表示以下查询:
声明@PurchasedInventoryItemID Int = 2
声明 @PurchasedInventorySectionID Int = 0
声明@PurchasedInventoryItem_PurchasingCategoryID Int = 3
声明 @PurchasedInventorySection_PurchasingCategoryID Int = 0
声明 @IsActive 位 = 1
声明@PropertyID Int = 2
声明 @PropertyValue nvarchar(1000) = 'Granny Smith'
--属性 1、属性 2、属性 3 ...
选择 O.PurchasedInventoryObjectID,
O.PurchasedInventoryObjectName,
O.PurchasedInventoryConjunctionID,
O.总结,
奥伯爵,
O.PropertyCount,
O.IsActive
FROM tblPurchasedInventoryObject 作为 O
INNER JOIN tblPurchasedInventoryConjunction As C ON C.PurchasedInventoryConjunctionID = O.PurchasedInventoryConjunctionID
INNER JOIN tblPurchasedInventoryItem 作为我在 I.PurchasedInventoryItemID = C.PurchasedInventoryItemID
INNER JOIN tblPurchasedInventorySection As S ON S.PurchasedInventorySectionID = C.PurchasedInventorySectionID
INNER JOIN tblPurchasedInventoryPropertyMap 作为 M ON M.PurchasedInventoryObjectID = O.PurchasedInventoryObjectID
INNER JOIN tblPropertyValue As V ON V.PropertyValueID = M.PropertyValueID
在哪里
I.PurchasedInventoryItemID = @PurchasedInventoryItemID 和
S.PurchasedInventorySectionID = @PurchasedInventorySectionID AND
I.PurchasingCategoryID = @PurchasedInventoryItem_PurchasingCategoryID 和
S.PurchasingCategoryID = @PurchasedInventorySection_PurchasingCategoryID 和
O.IsActive = @IsActive AND
V.PropertyID = @PropertyID 和
V.Value = @PropertyValue
现在,我知道 .NET 中的查询看起来不像这样,这是我在 SQL Design Studio 中的测试。自然会使用 VB.NET 变量来代替 SQL 局部变量。
我的问题是:“WHERE”之后的所有条件都是可选的。在这种情况下,可能会进行使用一个、一些、全部或不使用任何条件的查询。 V.PropertyID 和 V.Value 也可以出现任意次数。
在 VB.NET 中,我可以通过简单地连接字符串并使用循环附加“V.PropertyID/V.Value”条件来使这个查询变得足够简单。
我也可以用MS SQL做一个存储过程,很简单。
但是,我想使用 LINQ 来完成。
如果有人可以指导我,我将不胜感激。
【问题讨论】: