2011-11-03 35 views
0

我有一個數據表,我想查找具有最接近TRK_Distance值的行並將其返回。我想這和它拋出一個異常,它無法找到列ABS(TRK_Distance - 1600)(1600是我的價值,我傳遞的條目)查找最接近我的參數的數據表中的行

var tempRow = data.Select("*", "ABS(TRK_Distance - " + entry+ ")")[0]; 

我怎樣才能做到這一點?有沒有更好的方法去做,而不是現在我怎麼做?

+0

的Linq不能使用ABS。您需要手動執行或在dbms上執行查詢。 – Polynomial

+0

有沒有辦法使用linq獲得最接近的值?也就是說,我可以用不同的方式來制定這個結果並得到我想要的結果嗎 – PlTaylor

+0

不是我所知道的。你很可能不得不使用循環。 – Polynomial

回答

2

我認爲你可以使用LINQ做到這一點:

var closest = data.Select(). 
    OrderBy(dr => Math.Abs((int)dr["TRK_Distance"] - 1600)). 
    FirstOrDefault(); 
+0

返回一個double而不是DataRow。 – PlTaylor

+0

@P泰勒,你說得對。我編輯了我的答案,使得最接近的是DataRow。 – Sean

+0

這工作除了轉換爲int。但是這是我的錯,因爲沒有說明1600是真的1600.0。我結束了data.Select()。OrderBy(dr => Math.Abs​​(Convert.ToDouble(dr [parameter]) - entry))。ToList()[0];備查。 – PlTaylor

相關問題