对数据库返回的数据进行排序

时间:2010-03-16 11:48:12

标签: c# sql-server-2005 entity

在我们的项目中,我们要求当数据库返回一组记录时,记录应该根据记录中的TITLE字段进行排序。记录必须按字母顺序排序,但如果记录的标题中有一个数字,那么它应该在标题只包含字母的记录之后。

详细说明: 我们使用的是SQL Server和c#。来自数据库的数据来自Entity类,它将数据转发到其他层。

那么,这个要求的可行和有效解决方案是什么。

1 个答案:

答案 0 :(得分:1)

我将假设您有一个包含数据并具有属性TITLE的对象。考虑:

class Entity
{
   ...
   public string TITLE { get; set; }
   ...
}

您可以将这些实体存储在List<Entity>中,稍后在需要时,调用Sort方法进行排序。

根据您的要求进行排序,在调用Sort时提供Comparer。有关详细信息,请参阅:http://msdn.microsoft.com/en-us/library/234b841s.aspxCompare(Entity x, Entity y)中,您可以根据需要比较两个实体。


关于比较TITLE's
试试这种比较方法:

private static int StringComparer(string x, string y)
{
    if (!x.AllChar()) return 1;
    if (!y.AllChar()) return -1;

    return x.CompareTo(y) * -1;
}

public static bool AllChar(this string x)
{
    char[] chars = x.ToCharArray();
    bool allchar = chars.Any<char>((c) => !char.IsLetter(c));

    return !allchar;
}