读书人

简略的 排序 linq

发布时间: 2013-01-09 09:38:16 作者: rapoo

简单的 排序 linq
问下 DataTable 用linq 怎么排序

期望结果:
2001年之前
2001
2002

如果按字符串升序排出来的是
2001
2001年之前
2002

如何能牌出来希望的结果。
需要自己写排序规则么?

往高手指点如何写。
[解决办法]
看我的sequence 字段,不知道符合不?


DataSet ds = new DataSet();
string explorerdata = @"SELECT TMPLOGID,
APP,
FILENAME,
OPERATOR,
FILESIZE,
AUTHOR,
LOGTIME,
OTHER,
LOGSEQUENCE,
ISANALYSIS
FROM TB_TMPLOG
WHERE 1=1 and LogTime>='{0}' and LogTime<='{1}' and Author='{2}' and app='explorer.exe' and decode(isanalysis,null,0,1)=0";
explorerdata = string.Format(explorerdata, beginDate, endDate, userid);
ds = getDataSetBySQL(explorerdata);//获取临时日志表数据
DataTable dt = ds.Tables[0];
//DataRow rowT = t.Rows[0];


//object obj = rowT[6];
//DateTime dt = Convert.ToDateTime(obj);
//string strTime = dt.Year + "-" + dt.Month + "-" + dt.Day + " " + dt.TimeOfDay;

/*end 获取临时日志表数据*/

/*处理数据*/
if (dt.Rows.Count < 1)//没数据则继续循环
continue;
string operators = null;
string filenames = null;
string sizes = null;
string strdate = null;
string logids = null;
var query1 =

from pl in dt.AsEnumerable()
orderby pl.Field<decimal>("logsequence")
group pl by pl.Field<string>("logtime")
into temppl
select new { Desc = temppl.Key, Total = temppl.Count(), detail = temppl, AA = temppl.ToArray() };


[解决办法]
排序可以用集合呀。


但我也想把代码写成可复用的。
#region T1字符串
public static void TTT1()
{
List<string> stdList = new List<string>() { "3" };
List<string> recordList = new List<string>() { "1", "0", "1", "3", "5", "1", "3", "0", "1", "3", "0", "1", "3", "1", "3", "0" };

List<string> nextList = FindNext(stdList, recordList);
foreach (var item in nextList)
{
Console.WriteLine(item.ToString());
}

}
/// <summary>
/// 字符串
/// </summary>
/// <param name="stdList"></param>
/// <param name="recordList"></param>
/// <returns></returns>
public static List<string> FindNext(List<string> stdList, List<string> recordList)
{
List<string> lstNext = new List<string>();

int La = 0;
string[] stArr = stdList.ToArray();
foreach (var item in recordList)
{
Console.Write(" : " + item.ToString());
int vResult = 0;
for (int i = 0; i < stArr.Length; i++)
{
if (La + stArr.Length < recordList.Count && recordList[La + i] == stArr[i])
{
vResult++;
}
else


{
break;
}

}
Console.Write(" " + vResult.ToString());
//
if (vResult == stArr.Length && La + vResult < recordList.Count)
{
lstNext.Add(recordList[La + vResult]);
Console.WriteLine(" " + recordList[La + vResult].ToString());
}
else
{
Console.WriteLine(" ");
}
La++;
}
return lstNext;
}

#endregion

读书人网 >.NET

热点推荐