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 联接。
类似于 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 联接。