嗨我有两个字符串构建器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();
}
}
答案 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
上执行此操作。