如何按日期对列进行排序?

Inz*_*ina 0 c# sql asp.net

我想知道一种简单的方法来按添加日期对列进行排序,例如:

ID|Name|Age|Date
1  John 21  20/03/2012
2  Chart 22 21/03/2012
3  Dart  31 22/03/2012
4  Rat   12 23/03/2012
Run Code Online (Sandbox Code Playgroud)

所以如果你知道我的意思,我想添加一个选项来对列的Date日期值进行排序.

谢谢

eou*_*3hf 5

你在尝试使用Linq2Sql吗?如果是这样,你可以这样做:

var result = from x in MyDataTable
             orderby x.Date ascending
             select x;
Run Code Online (Sandbox Code Playgroud)

(取代ascendingdescending,如果你想要去的其他方式).

如果你想对它进行选择性排序,你可以使用IQueryable<T>s并可选择排序,a:

IQueryable<MyDataTable> GetData(bool sortByDate)
{
    var result = from x in DataContext.Table<MyDataTable>
                 where SomeMatchingClause(x)
                 select x;

    if(sortByDate)
    {
        result = result.OrderBy(x => x.Date); // or OrderByDescending
    }

    return result;
}
Run Code Online (Sandbox Code Playgroud)

如果您直接在SQL中查询,那就行了

SELECT * FROM MyTable ORDER BY Date ASC
Run Code Online (Sandbox Code Playgroud)

(替换ASCDESC,如果你想让它走另外一条路)

我不经常string在C#中构建SQL查询,但是如果你想让它成为可选项,我想你可以逐步构建查询,即使它真的很粗糙:

string GetSqlQuery(bool sortByDate)
{
    string result = "SELECT * FROM MyTable";
    if(sortByDate)
    {
        result += " ORDER BY Date ASC";
    }
    return result;
}
Run Code Online (Sandbox Code Playgroud)