最后放置Array的特定项

时间:2017-02-28 10:40:58

标签: c# linq combobox

我有一个来自数据库的数组按字母顺序排序,如下所示:

  

['代数','其他','物理']

现在,我想要的是当我填充ComboBox时,'Other'字将放在数组的末尾。有关如何实现这一点的任何想法?所以数组就是这样的:

  

['代数','物理','其他']

6 个答案:

答案 0 :(得分:3)

在填充组合框后将“其他”添加到组合框中

comboBox1.Items.Remove("OTHERS");
comboBox1.Items.Add("OTHERS");

答案 1 :(得分:3)

如何使用Linq OrderBy。

var arr = new[] { "Algebra", "Others", "Physics" };
arr = arr.OrderBy(e => e == "Others").ToArray();

答案 2 :(得分:2)

Others您的商品中有例外,您知道这一点。所以只需编码

if (items.Contains("Others"))
{
    items.Remove("Others");
}
items.Add("Others"); // place this inside if statement if `Others` should not be added 
                     // and can only be moved to end of array.

答案 3 :(得分:1)

虽然我会使用其他人提出的解决方案(只需手动添加“Others”),如果你真的想对数组进行排序:

var arr = new[] { "Algebra", "Others", "Physics" };

Array.Sort(arr, (p, q) => {
    if (p == "Others") {
        return q == "Others" ? 0 : 1;
    }

    if (q == "Others") {
        return -1;
    }

    return StringComparer.CurrentCulture.Compare(p, q);
});

(我创建了一个以特殊方式处理“Others”的字符串比较函数,并认为它是“最大的”字符串)

答案 4 :(得分:1)

这个怎么样:

string[] str = {"Algebra", "Others", "Physics"};
var list = str.Where(c => c != "Others").OrderBy(c => c).ToList();
list.Add("Others");

答案 5 :(得分:0)

你不能手动把其他人'在数组的末尾?

string[] list = { "Algebra", "Physics", "Others" };
comboBox1.Items.AddRange(list);

enter image description here