您可以通過如下建立一個表達式樹寫這樣的方法以表示列;您可以將其更改爲在Visual Studio中生成的DataContexts的GetProperties)。
我們需要創建一個表達式,將這些字段提供給一個string.Concat語句。當後者接受一個字符串數組時,我們創建一個NewArrayInit表達式來構建數組。
接下來,我們調用Concat方法將字符串連接在一起,最後使用string.Contains方法來測試字符串是否在我們構建的表達式中。
下面是方法上的AdventureWorks運行:
void Main()
{
Addresses.Where (AnyColumnContains<Address> ("Seattle")).Dump();
}
LAMBDA翻譯:
Addresses
.Where (
entity =>
String
.Concat (new String[] { entity.AddressLine1, entity.AddressLine2,
entity.City, entity.PostalCode })
.Contains ("Seattle")
)
SQL翻譯:
-- Region Parameters
DECLARE @p0 NVarChar(1000) = '%Seattle%'
-- EndRegion
SELECT [t0].[AddressID], [t0].[AddressLine1], [t0].[AddressLine2], [t0].[City],
[t0].[StateProvinceID], [t0].[PostalCode], [t0].[rowguid] AS [Rowguid],
[t0].[ModifiedDate]
FROM [Person].[Address] AS [t0]
WHERE ((([t0].[AddressLine1] + [t0].[AddressLine2]) + [t0].[City]) + [t0].[PostalCode])
LIKE @p0
請出示您當前擁有的代碼。你有哪張數據結構表? – 2011-05-10 07:14:07
不知道我是否正確理解了你,但是我已經向q添加了一些信息。 – Joe 2011-05-10 07:28:42
從什麼情況下'ATable'? LINQ2SQL? EF?一個'DataTable'? ...? – 2011-05-10 07:31:00