2016-03-23 14 views
0

に、特定のキーとSQLからデータを取得します。は、私は次を含むデータベースを持っていると言うことができますC#アプリケーション

+---------------------------------------+ 
| Key Username Firstname Lastname | 
+---------------------------------------+ 
| 1234 user1  Firstname1 Lastname1 | 
| 1234 user2  Firstname2 Lastname2 | 
| 1234 user3  Firstname3 Lastname3 | 
| 5678 user4  Firstname4 Lastname4 | 
| 9012 user5  Firstname5 Lastname5 | 
| 9012 user6  Firstname6 Lastname6 | 
| 9012 user7  Firstname7 Lastname7 | 
| 3456 user8  Firstname8 Lastname8 | 
| 3456 user9  Firstname9 Lastname9 | 
+---------------------------------------+ 

私は、APIに送信しますC#アプリケーションでデータを取得したいです次の要求で:

  • APIは、それが各キーに1つの呼び出しになりますが、それは同じで、そのキーを持つすべてのユーザーを送信する必要がありますので、データは「キー」と一緒に送信されることを想定していコール。

  • 「キー」列の値は「不明」です(たとえば、「キー」にさらに値を追加できます)。

私はすでに特定のキーを持つすべてのユーザーを作成するためのクラスを持って、そしてAPIへの呼び出しは次のようになります。

  • insertUser(キー、usersArray)、「キー"はデータベースの" Key "列の値で、" usersArray "はデータベースから特定の" Key "を持つすべてのユーザーを取得するクラスから作成された配列です。

主な質問は、一意の「Key」を持つすべてのユーザーを取得してAPIを使用して挿入し、次の「Key」に移動して挿入する最も良い方法ですその "キー"を持つすべてのユーザー。

私は十分に具体的であることを願っています。

ありがとうございます!

+1

あなたが何を求めているのか、何をあなたが答えと期待しているのかは明確ではありません。特定の問題が発生している場合は、[最小限の、完全で検証可能な例]を含めてください(http://stackoverflow.com/help/mcve)。 [良い質問をするにはどうすればいいですか](http://stackoverflow.com/help/how-to-ask)も読んでください。質問が具体的であり過度に広範でないことを確認してください。 – Igor

+0

テーブルの – Chuck

+0

@ ChuckからDISTINCT Key、Username、Firstname、Lastnameを選択すると、行はすでに区別されています。 – jarlh

答えて

0

私はあなたが探しているものが何であるかは非常に分かりません。しかし、データアクセスの部分がダウンしていると仮定すると、LINQはこれにあなたの友人かもしれません。具体的には、方法はGroupByである。

var allRows = GetAllRows(); // Returns IEnumerable<User>, where User has properties 
          // for Key, Username, FirstName, and LastName. 

var grouped = allRows.GroupBy(c => c.Key); 

foreach (var v in grouped) 
{ 
    InsertUsers(v.Key, v); // v is IEnumerable<User> 
} 

は、これはその指定されたキーの後、(まだメモリ内の)グループにそれらを、それぞれユニークなKey値を反復処理し、アップロードユーザー、マシン上のメモリへのすべてのレコードをロードします。

の場合、すべてのデータをメモリに読み込むことができます。これはあなたの状況によって異なり、適用される場合とされない場合があります。

メモリが帯域幅と時間よりも懸念される場合は、単純にSELECT DISTINCT Keyになり、それらを繰り返し、関連するユーザーを取得してアップロードすることもできます。遅くなりますが、一度に1つのKeyの価値のあるユーザーだけを読み込む必要があります。

+0

これはかなりのスポットで、正しい方向に私を指摘しました。私が列挙したデータテーブルでLINQを使用しました。助けてくれてありがとう! –

関連する問題