C#λ-EF芯,A列和x2B列;B列
我正在寻找一种使用lambda进行选择的方法。。类似于这个TSQL的东西C#λ-EF芯,A列和x2B列;B列,c#,entity-framework,.net-core,ef-core-3.1,C#,Entity Framework,.net Core,Ef Core 3.1,我正在寻找一种使用lambda进行选择的方法。。类似于这个TSQL的东西 SELECT Id FROM TableA WHERE TableA.col1 +' '+ TableA.col2 IN ( SELECT TableB.col1 +' '+ TableB.col2 FROM TableB ) 到目前为止,我有一个lambda表达式: public async Task<int[]> GetFavourite
SELECT Id FROM TableA
WHERE TableA.col1 +' '+ TableA.col2 IN
(
SELECT TableB.col1 +' '+ TableB.col2 FROM TableB
)
到目前为止,我有一个lambda表达式:
public async Task<int[]> GetFavouritesIdsAsync()
{
String[] mergedTableB = await _basicContext.TableB.Select(x => $"{x.col1}_{x.col2}").ToArrayAsync(); // this works!
return await _basicContext.TableA.Where(x => mergedTableB.Contains($"{x.col1}_{x.col2}")).Select(x => x.Id).ToArrayAsync();
}
public异步任务getFavoriteSidsaSync()
{
String[]mergedTableB=await _basicContext.TableB.Select(x=>$“{x.col1}}{x.col2}”)。ToArrayAsync();//这很有效!
返回wait{u basicContext.TableA.Where(x=>mergedTableB.Contains($“{x.col1}}}{x.col2}”)。选择(x=>x.Id.ToArrayAsync();
}
但它不起作用-EF无法翻译string.format bla bla bla
任何解决方法?使用LINQ,使用简单的联接操作:
_basicContext.TableA.Join(
_basicContext.TableB,
a => new {a.col1, a.col2},
b => new {b.col1, b.col2},
(a, b) => a );
现有尝试的解决方法:
mergedTableB.Contains(x.col1 + "_" + x.col2)
为什么?您可以对A.1=B.1和A.2=B.2使用内部联接,并获得与字符串串联相同的结果。我对实体框架不是很熟悉,但据我所知。