命名TABLE_1與下列的表:
- ID
- ColumnA
- ColumnB
- ColumnC
- ColumnD
我有SQL查詢,其中TABLE_1根據ColumnA,ColumnB,ColumnC加入本身兩次。該查詢可能是這個樣子:
Select t1.ID, t2.ID, t3.ID, LEAST(t1.ColumnD, t2.ColumnD, t3.ColumnD)
From TABLE_1 t1
Left Join TABLE_1 t2 On
t1.ColumnA = t2.ColumnA
And t1.ColumnB = t2.ColumnB
And t1.ColumnC = t2.ColumnC
Left Join TABLE_1 t3 On
t2.ColumnA = t3.ColumnA
And t2.ColumnB = t3.ColumnB
And t2.ColumnC = t3.ColumnC
問題:
我需要查詢的LINQ被重寫。我嘗試了一下:
var query =
from t1 in myTABLE1List // List<TABLE_1>
join t2 in myTABLE1List
on new {t1.ColumnA, t1.ColumnB, t2.ColumnC}
equals new {t2.ColumnA, t2.ColumnB, t2.ColumnC}
join t3 in myTABLE1List
on new {t2.ColumnA, t2.ColumnB, t2.ColumnC}
equals new {t3.ColumnA, t3.ColumnB, t3.ColumnC}
select new {
ID_1 = s1.ID,
ID_2 = s2.ID,
ID_3 = s3.ID,
// Invalid anonymous type member declarator.
// Anonymous type members must be declared with a member assignment,
// simple name or member access.
// how can I implement this?
least(s1.ColumnD, s2.ColumnD, s3.ColumnD)
};
....
private object least(params object[] objects)
{
// code here that sorts the objects and returns the 'smallest' of them.
return leastObject;
}
如何在LINQ中編寫我的查詢?我究竟做錯了什麼?我認爲可以在LINQ表達式中使用函數,那麼爲什麼我會得到這個錯誤?
什麼LEAST(... )?你的環境中是否有一些自定義的UDF? – 2011-03-15 19:52:55
我還應該注意到這些是字符串值(它們是一個varchar列中的數字,爲什麼這個列不是你說的一個整數?好問題......老闆不希望它是一個整數,以防我們得到來自我們客戶的非數字數據......可能會發生。) – DJTripleThreat 2011-03-15 19:55:48
@K Ivanov,至少從Oracle它的Math.Min或調用MIN(列),除了它找到記錄中多列的最小值,而不是一列中有多個記錄。 – DJTripleThreat 2011-03-15 19:57:02