0

ドメイン名とPURLの生成に使用する列を指定することで、ユーザーがPURLを生成できるようにするExcelアドインを作成しています。

したがって、たとえば、ユーザーはstackoverflow.comのドメインと、名前名前の列を指定できます。結果のPURLは次のようになります。

http://stackoverflow.com/JamesHill

このアドインの唯一の本当の課題は、PURLの一意性を確保することです。ジェームズヒルが2つあるとしましょう。その場合、次のPURLを生成する必要があります。

http://stackoverflow.com/JamesHill
http://stackoverflow.com/JamesHill1

質問

List<CustomObject>それぞれにPURLプロパティ(文字列)が含まれていると仮定して、PURLの一意性を確保するための最良の方法は何でしょうか。OVERSQLとに相当するC#を探していると思いますPARTITION BY

任意の提案をいただければ幸いです。

追加情報

PURLがExcelで生成されると、データはデータ処理のためにお客様に返送されます。ある時点で、データはPURLサーバー要求を処理するDBにインポートされます。アドインの目的は、プログラマー以外の人がPURLをすばやく生成し、プログラマーの関与なしに顧客に返すことができるようにすることです。

4

1 に答える 1

1

最も一般的な2つのソリューションは次のとおりです。

1)HashSet<K>キーの一意性のみをテストする場合は、を使用します。

var purlsSet = new HashSet<string>();
purlsSet.Add("http://stackoverflow.com/JamesHill");
...
if (purlsSet.Contains("http://stackoverflow.com/JamesHill") {
    ...
} 

2)Dictionary<K,V>キーと値を保存する場合は、を使用します。

var purlsDict = new Dictionary<string, CustomObject>();
CustomObject customObject = ...;
purlsDict.Add("http://stackoverflow.com/JamesHill", customObject);
...

if (purlsDict.ContainsKey("http://stackoverflow.com/JamesHill") {
    ...
}

// OR

if (purlsDict.TryGetValue("http://stackoverflow.com/JamesHill", out customObject) {
    ...
} 

OrderedDictionaryリストと辞書の両方の機能を組み合わせた、を使用することもできます。またSortedDictionary<K,V>、エントリを常に並べ替える場合は、を使用することもできます。

于 2012-05-25T13:44:55.270 に答える