C# Linq Join Lambda(一个键选择器包含另一个键选择器)

C# Linq Join Lambda (a key selector contains the other key selector)

类似于 sql 查询 "where a like '%b%' "

C# with .Net framework 4.6 不接受这个:

context.Table1
    .Join(
        context.Table2,
        table1 => table1.strStringContainsIntegers, // string (.net needs int, 
                                  //I need string that contains list of integers)
        table2 => table2.intInteger,                // integer
        (table1, table2) => new { table1.SomeField, table2.SomeField }
    ).Where(o=>o.table1.strStringContainsIntegers.Contains(table2.intInteger+"-"));

如何将一列(键选择器 2)上的两个 tables/lists 包含在另一列(键选择器 1)中?

你可以这样做:

var query =
    context
        .Table1
        .SelectMany(table1 =>
            context
                .Table2
                .Where(table2 => table1.strStringContainsIntegers.Contains(table2.intInteger.ToString()))
                .Select(
                    table2 => new {table1.SomeField, table2.SomeField}));

LINQ 会将其转换为 SQL 联接。