0
를 SQL로 follwing을생성 된 SQL 코드에 따라
생성ProductPricesDataContext db = new ProductPricesDataContext();
var products = from p in db.Products
where p.ProductFields.Count > 3
select new
{
ProductIDD = p.ProductId,
ProductName = p.ProductName.Contains("hotel"),
NumbeOfProd = p.ProductFields.Count,
totalFields = p.ProductFields.Sum(o => o.FieldId + o.FieldId)
};
이유는 제품 이름이 CASE 문이 때문에 대신에 제품 이름이의 난 그냥 내 결과에 0을 얻고있다
SELECT [t0].[ProductId] AS [ProductIDD],
(CASE
WHEN [t0].[ProductName] LIKE '%hotel%' THEN 1
WHEN NOT ([t0].[ProductName] LIKE '%hotel%') THEN 0
ELSE NULL
END) AS [ProductName],
(SELECT COUNT(*) FROM [dbo].[ProductField] AS [t2] WHERE [t2].[ProductId] = [t0].[ProductId]) AS [NumbeOfProd],
(SELECT SUM([t3].[FieldId] + [t3].[FieldId]) FROM [dbo].[ProductField] AS [t3] WHERE [t3].[ProductId] = [t0].[ProductId]) AS [totalFields]
FROM [dbo].[Product] AS [t0]
WHERE ((SELECT COUNT(*) FROM [dbo].[ProductField] AS [t1] WHERE [t1].[ProductId] = [t0].[ProductId])) > 3
SQL 세트. .
ProductName = p.ProductName.Contains("hotel"),
p.ProductName.Contains("hotel")
반환하거나 true
: 그것은 다음과 같은 SQL을 생성한다 (여기서 제품 이름 '% 호텔 %'처럼
SELECT [t0].[ProductId] AS [ProductIDD],
[ProductName],
(SELECT COUNT(*) FROM [dbo].[ProductField] AS [t2] WHERE [t2].[ProductId] = [t0].[ProductId]) AS [NumbeOfProd],
(SELECT SUM([t3].[FieldId] + [t3].[FieldId]) FROM [dbo].[ProductField] AS [t3] WHERE [t3].[ProductId] = [t0].[ProductId]) AS [totalFields]
FROM [dbo].[Product] AS [t0]
WHERE ((SELECT COUNT(*) FROM [dbo].[ProductField] AS [t1] WHERE [t1].[ProductId] = [t0].[ProductId])) > 3
AND t0.ProductName like '%hotel%'
감사
ProductNames를 반환해야하는 경우 'hotel'이 (가)이 위치에 추가해야합니까? 그리고이 줄은 ProductName에 'hotel'가 포함되어 반환 된 true 또는 false를 반환합니다. – Kashif
@Muhammad Kashif Nadeem -'Contains' 함수는 부울을 반환합니다. 결과를 제품 이름에 'hotel'가 포함 된 결과로 제한하려는 경우 where 절에 속합니다. 선택할 때 결과 집합에는 where 절과 일치하는 결과 만 포함됩니다. – Oded