C#λ-EF芯,A列和x2B列;B列

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

我正在寻找一种使用lambda进行选择的方法。。类似于这个TSQL的东西

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使用内部联接,并获得与字符串串联相同的结果。我对实体框架不是很熟悉,但据我所知。