1

我有一个数据集,我用一个名为 的特殊列显示4_Most_Previlent。它的数据类型是字符串,格式如下:Item1-Item2-Item3-Item4。

以下是该列的一些值的示例:

Cl-K-Be-Li
K-Cl-He-O
Cu-Mn-Ca-Cl
Cr-Cu-Mn-Cu
Cu-Cr-Mn-Cu
Cr-Cu-Ca-S

我喜欢根据此列自定义项目,您可以说第一个和第二个元素需要相同,但可以互换。所以它就像 AB|CD 或 BA|CD。因此,在我上面的示例中,前 2 个项目将彼此相邻排序,因为它们都以相同的 2 个项目开头,但它们被转置了。底部 3 也将彼此相邻排序。

关于如何做到这一点和/或 C# 中的代码片段的任何想法将不胜感激。谢谢!

4

1 回答 1

1

我会将字符串包装在一个类中,然后您可以根据IComparable需要自由实现。

例如:

class SomeRecord : IComparable<SomeRecord> {
    public SomeRecord(string line) {
        string[] fields = line.Split('-');
        Item1 = fields[0];
        Item2 = fields[1];
        Item3 = fields[2];
        Item4 = fields[3];
    }
    public string Item1 { get;set; }
    public string Item2 { get;set; }
    public string Item3 { get;set; }
    public string Item4 { get;set; }

    int IComparable<SomeRecord>.CompareTo(SomeRecord other) {
        // implement your custom logic here, returning -1, 0, or 1
    }
}

完成此操作后,您可以使用默认排序器对它们进行排序。

于 2013-04-02T15:13:44.057 回答