2010年6月7日 星期一

C# LinQ IP排序

哈哈
之前分享 SQL IP排序方法
可是勒
最近我的心都飄到LinQ上 怎可能不Try It勒


但是勒
哈哈哈
我試不出來 Orz...
我將IP切開後 OrderBy後 LinQ轉SQL語法時候 他說不支援 囧
我也不知道怎辦 XDDDD

所以
我就用折衷方式
先將表讀出來後 存到DataTable裡後
再排序一次 就好了


var Iplinq =
from a in context.IpTable
where a.IP.Contains(IPblock)
select new { IP = a.IP, IsServer = a.IsServer }; //讀出SQL表格

IpTable = LinqQueryToDataTable(Iplinq); //轉DataTable
var orderbyIP =
from DataRow a in IpTable.Rows
let b = a.Field("IP").Split('.') //切開IP
let ipblock1 = b.GetValue(0)
let ipblock2 = b.GetValue(1)
let ipblock3 = b.GetValue(2)
let ipblock4 = b.GetValue(3)
orderby Convert.ToInt32(ipblock1), Convert.ToInt32(ipblock2), Convert.ToInt32(ipblock3), Convert.ToInt32(ipblock4) //轉成數值在個別排序
select a;

語法一樣 就是 LinQToSql時候出問題 導致不能排序
如果直接丟上上面的SQL那部份就會有錯
應該是......就是有問題吧 XD
如果各位大大有辦法解決 請幫我解答一下 感恩

沒有留言:

張貼留言