LINQ to SQL和SQL中的字段连接

oki*_*ieh 1 c# sql linq linq-to-sql

我想创建一个LINQ查询,导致以下SQL语句.假设我有一个只有两个字符字段的简单表 - field1和field2.我的SQL语句是:

    SELECT field1, field2, field1+field2 AS ConcatField
    FROM TableX
    WHERE field1+field2 = 'abcdef'
Run Code Online (Sandbox Code Playgroud)

如何在LINQ中完成?

Wou*_*ort 5

您可以使用let子句来定义concatfield,然后选择一个包含要返回的3个字段的匿名类型.

from f in TableX
let concatfield = f.Field1 + f.Field2
where concatfield = 'abcdef'
select new
{
  f.Field1,
  f.Field2,
  concatfield
}
Run Code Online (Sandbox Code Playgroud)

关于更复杂的where子句的示例,您需要构建要比较的值的数组,然后执行以下操作:

  List<string> values = .....

  from f in TableX
  let concatfield = f.Field1 + f.Field2
  where values.Contains(concatfield)
  select new
  {
     f.Field1,
     f.Field2,
     concatfield
  }
Run Code Online (Sandbox Code Playgroud)