私は SQL クエリを持っていて、LINQ に変換したかったのですが、これを行うのを手伝ってくれませんか。
SELECT p.ProductID, p.ProductName FROM tblProducts p
WHERE p.ProductID IN (SELECT s.ProductID FROM tblStock s WHERE s.BarCode = 2222)
この場合、BarCode は null 可能な型です。
私は SQL クエリを持っていて、LINQ に変換したかったのですが、これを行うのを手伝ってくれませんか。
SELECT p.ProductID, p.ProductName FROM tblProducts p
WHERE p.ProductID IN (SELECT s.ProductID FROM tblStock s WHERE s.BarCode = 2222)
この場合、BarCode は null 可能な型です。
join
代わりにin
次のことを行う必要があります。
var result = tblProducts
.Join
(
tblStock.Where(s => s.BarCode = 2222),
p => p.ProductID,
s => s.ProductID,
(p, s) => new { ProductID = p.ProductID, ProductName = p.ProductName }
);
データとニーズに応じて、 を追加することもでき.Distinct()
ます。
'IN' に変換するには、Containsを使用します。
tblProducts.Where(p => tblStock.Where(ts => ts.BarCode == 2222)
.Select(ts => ts.ProductId)
.Contains(p.ProductID))
.Select(p => new {p.ProductID, p.ProductName});
これは、効率のために内部結合として記述する必要があります。Linq では:
var myQuery = from p in myContext.tblProducts
join s in myContext.tblStock on p.ProductID equals s.ProductID
where s.BarCode = 2222
select new { ProductID = p.ProductID, ProductName = p.ProductName };
foreach(var product in myQuery)
{
// do stuff
}