我想创建一个LINQ查询,它会生成以下SQL语句。假设我有一个只有两个字符字段的简单表格 - field1和field2。我的SQL语句是:LINQ to SQL和SQL中的字段连接
SELECT field1, field2, field1+field2 AS ConcatField
FROM TableX
WHERE field1+field2 = 'abcdef'
这怎么能在LINQ中完成?
我想创建一个LINQ查询,它会生成以下SQL语句。假设我有一个只有两个字符字段的简单表格 - field1和field2。我的SQL语句是:LINQ to SQL和SQL中的字段连接
SELECT field1, field2, field1+field2 AS ConcatField
FROM TableX
WHERE field1+field2 = 'abcdef'
这怎么能在LINQ中完成?
您可以使用let
子句来定义concatfield,然后选择一个带有您想要返回的3个字段的匿名类型。
from f in TableX
let concatfield = f.Field1 + f.Field2
where concatfield = 'abcdef'
select new
{
f.Field1,
f.Field2,
concatfield
}
关于你的更复杂的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
}
使用LinqToSql这可以通过投射到一个匿名类型和一个字段中来实现,它是您提到的两个文件的组合:
var concatenatedField = from c in ConcatFields
where c.something == somethignElse
select new {
field1 = c.field1
field2 = c.field2
field3 = c.field1 + c.field2
}
这是完美的。现在让我们把它变得更复杂一点: 'SELECT field1,field2,field1 + field2 AS ConcatField FROM TableX WHERE field1 + field2 IN('abcdef','hijklm')' – okieh
如果你只有2个元素, d建议只复制该条款。如果你有很多东西,以及服务器端要做什么,你必须将元素上传到一个表中,然后加入到这个表中。 – Tipx
非常感谢,这确定了我的方向! – okieh