2015-11-10 39 views
0

我正在做一些來自數據庫的數據導致一些字符串字段和一個int字段(starLength)有一個數字的c#.net計算。從計算中插入數據到按值排序的列表中

最終,我想查看結果排序該int字段(starLength)的前100個記錄。

我在做什麼:當計算被執行時,我想要開始將這些數據插入到某種數據類型中,如果下一條記錄符合starLength的範圍並且在100條記錄中,那麼我想補充一點記錄。

我試過了:我創建了一類具有各種字符串字段和int字段的星型。當我遍歷計算得到的數據時,我將星形記錄添加到列表中,然後對它們進行排序。但是,這會將每個結果插入到百萬條記錄的列表中。我只關心按starLength排序的前100條記錄。

關於如何執行我的計算的任何建議,請檢查這是否落入前100名starLength字段,然後才插入記錄。

編輯:添加一些代碼來顯示我有什麼和問題

public class Stars 
    { 
     string a; 
     string b; 
     string c; 
     int starLength; 

     public Stars (_a,_b,_c,_sLength) 
     { 
      a=_a; 
      b=_b; 
      c=_c; 
      starLength=_sLength 
     } 
    } 

//main 
    List<Stars> myStars = new List<Stars>(); 

    //doing math here and adding records 
    myStars.Add(a,b,c,sl); 

^基本上我有什麼。但是當我填寫myStars列表時,我想確保starLength處於前100名starLength的範圍內

+1

這是當你添加你的代碼。 –

+0

https://en.wikipedia.org/wiki/Selection_algorithm –

回答

1

我不知道你是如何從數據庫中獲取這些數據的,但我認爲你是如果你願意,可以把它作爲List。無論如何,LINQ似乎都是最好的選擇。

var results = yourListFromDataBase.Where(s => s.yourIntValue == <your criteria>).Take(100); 

如果你想組織它,你甚至可以在那裏添加OrderBy。

你確實提到了一些計算方法,所以我不完全肯定這對你來說很實用。

+0

添加了一些代碼來顯示我目前正在做什麼,我沿着使用linq orderby最終對數百萬條記錄進行排序的路徑,但認爲它更容易做到我輸入的排序,所以我基本上丟棄數據,如果它不在我目前的最小最大範圍內 – Reza