C# Lambda - EF Core,Col A+ Col B

C# Lambda - EF Core, Col A+ Col B

我正在寻找一种方法 select 使用 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(); 
}

但它不起作用 - EF 无法翻译 string.format 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)