我想創建一個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