2016-03-23 65 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預期的數據的「鑰匙」來發送,使得將是一個呼籲每個按鍵,但它必須所有的用戶發送與同是關鍵呼叫。

  • 「密鑰」列中的值爲「未知」(例如,可以向「密鑰」添加更多值)。

我已經有了一個類與特定的密鑰生成的所有用戶,在調用API看起來像下面這樣:

  • insertUser(鍵,usersArray),其中「關鍵「是數據庫中」Key「列的值,」usersArray「是從一個類中創建的數組,該類從數據庫中獲取具有特定」Key「的所有用戶。

主要的問題是,更具體地說,哪個是檢索具有唯一「密鑰」的所有用戶並使用API​​插入它們的最佳方式,然後轉到下一個「密鑰」並插入所有使用該「密鑰」的用戶。

我希望我具體夠了,否則請求我澄清。

提前致謝!

+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值迭代,並上傳用戶對於給定的鍵。

這是一個不錯的解決方案如果你可以負擔所有的數據加載到內存。這將取決於你的情況,可能會或可能不適用。

如果內存比帶寬和時間更值得關注,它也可以簡單地工作,然後遍歷這些內容,獲取相關用戶並上傳它們。速度較慢,但​​您只需一次加載一個Key的用戶身份。

+0

這是非常現場,指出我在正確的方向。使用LINQ與我列舉的數據表。非常感謝你的幫助! –

相關問題