【发布时间】:2014-10-08 12:18:32
【问题描述】:
我正在尝试将 sql 查询转换为有效的 linq 语句,不幸的是它不像预期的那么容易。
原始 SQL 查询如下所示:
SELECT DISTINCT tt1.ArtikelId
FROM
(
SELECT ArtikelId FROM [dbo].[ArtSearchEinfachView]
WHERE Feld = 'Listungsstatus' AND Wert = '0'
) tt1
INNER JOIN
(
SELECT ArtikelId FROM [dbo].[ArtSearchEinfachView]
WHERE Feld = 'AktiverAktikel' AND Wert = '1'
) tt2
ON tt1.ArtikelId = tt2.ArtikelId
INNER JOIN
(
SELECT ArtikelId FROM [dbo].[ArtSearchEinfachView]
WHERE Feld = 'Artikelbezeichnung' AND Wert like '%berentzen%'
) tt3
ON tt1.ArtikelId = tt3.ArtikelId
稍后会有更多的连接,稍后会构建一个谓词构建器,但是对于这个页面,我只包含了 2 个。
我试图转换它。我正在使用 devforce 实体管理器,但不幸的是它不起作用:
public async Task<int> LadeArtikelCountEinfachNew(string sucheingabe)
{
var query = _artikelContainer.ArtSearchEinfach.Where(p => p.Feld == "Listungsart" && p.Wert == "0");
query = query.Join(_artikelContainer.ArtSearchEinfach.Where(x => x.Feld == "AktiverAktikel" &&
x.Wert == "1"),
x => x.ArtikelId,
y => y.ArtikelId,
(x,y) => y).Distinct();
query = query.Join(_artikelContainer.ArtSearchEinfach.Where(p => p.Feld == "Artikelbezeichnung" &&
p.Wert.Contains(sucheingabe)),
x => x.ArtikelId,
y => y.ArtikelId,
(x, y) => y).Distinct();
return await query.AsScalarAsync().Count();
}
有人可以帮帮我吗?
【问题讨论】: