使用C#比较两个字符串构建器

时间:2012-08-28 16:14:17

标签: c# asp.net-3.5

嗨我有两个字符串构建器s1和s2。我正在使用逗号分隔符为该stringbuilder分配订单。我想比较两个字符串构建器。我想知道s1中的所有订单都在s2中。如果不是我想知道s2中缺少哪个订单。如何实现?

if (!IsPostBack)
{
    int reccount = dsResult.Tables[0].Rows.Count;
    for (int count = 0; count < reccount;count++)
    {
        HashSet<string> arrayOrdId = new HashSet<string>();
        arrayOrdId.Add(dsResult.Tables[0].Rows[count][1].ToString());
        // arrayOrdId[count] = dsResult.Tables[0].Rows[count][1].ToString();
    }
}

2 个答案:

答案 0 :(得分:7)

我建议不要使用StringBuilder - 而是创建两个List<string>或可能HashSet<string>来构建订单ID,然后比较那些。如果由于其他原因需要创建字符串表示,请单独执行此操作。 (我假设您的订单ID是字符串。如果不是,请使用相应类型的集合。)

目前尚不清楚订单是否重要,但如果不重要,HashSet<string>就是您应该使用的。你可以很容易地发现差异:

var missingFromX = y.Except(x);
var missingFromY = x.Except(y);
// Do whatever you want with those differences

答案 1 :(得分:1)

这样的东西
var orders1 = new HashSet<string>();
var orders2 = new HashSet<string>();

// add the orders to the sets, not stringbuilders, here

var order1sInOrders2 = orders1.Intersect(orders2);
var order2sNotInOrders1 = orders2.Except(orders1);

您可能需要考虑直接在某些自定义IEnumerable课程的Order而不是string上执行此操作。