订购数据时的字符串行为

时间:2011-09-10 16:12:55

标签: c# wpf datagrid

在我的应用程序中,我从网站下载一些数据,提供人口,景观区等景观信息。

解析html代码后,数据存储在对象列表中

public class Landscape
{
    public int Population { get; set; }
    public string Area { get; set; }
}

public List<Landscape> data;

没问题。按照填充dataGrid和我的应用程序的目的。现在,问题在哪里?网站上的区域信息采用半数字,半字符串格式。例如: 10 000 km2

我可以选择是否修剪 km2 后缀并将数据存储为int,或者不做任何操作并将数据存储为字符串。 由于我希望在原始格式的dataGrid中有数据,我决定不修剪。

最后,是否有一种订购行的方法(按区域大小)作为int,尽管它是字符串类型?

2 个答案:

答案 0 :(得分:1)

您可以使用linq按翻译的值进行排序,但不要认为这会很快。

public class Landscape
{
    public int Population { get; set; }
    public string Area { get; set; }

    public int TrimAndConvert()
    {
        /* Your Code to trim and convert to int */
    }
}


data.OrderBy(landscape => landscape.Area.TrimAndConvert());

我认为更好的方法是将区域保存为数字并添加修剪部分仅用于输出。

public class Landscape
{
    public int Population { get; set; }
    public int AreaValue { get; set; }
    public string AreaUnit { get; set; }

    public string Area 
    {
        get 
        {
            return AreaValue.ToString() + AreaUnit;
        }
    }
}

答案 1 :(得分:0)

您需要实现IComparer并将其实例传递给带有IComparer的List.Sort()方法/重载。

这应该让你开始:

List<T>.Sort Method (IComparer<T>)