0

こんにちは私は2つの文字列ビルダーs1とs2を持っています。カンマ区切り文字を使用して、その文字列ビルダーに注文を割り当てています。2つの文字列ビルダーを比較したいと思います。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();
    }
}
4

2 に答える 2

7

これにはまったく使用しないことをお勧めしStringBuilderます。代わりに、2つを作成するList<string> か、場合によっては注文IDを作成してから、それらHashSet<string>を比較します。他の理由で文字列表現を作成する必要がある場合は、個別に作成してください。(注文IDは文字列であると想定しています。そうでない場合は、代わりに適切なタイプのコレクションを使用してください。)

順序が重要かどうかは明確ではありませんが、重要でない場合は、HashSet<string>使用する必要があります。違いは簡単に見つけることができます。

var missingFromX = y.Except(x);
var missingFromY = x.Except(y);
// Do whatever you want with those differences
于 2012-08-28T16:16:38.233 に答える
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);

これを、sではなくIEnumerableカスタムクラスのsで直接実行することを検討することをお勧めします。Orderstring

于 2012-08-28T16:23:55.567 に答える