1樓:氨屠笙
不如直接用 sqlite建立一個記憶體資料庫,你直接寫到sqlite的記憶體資料庫裡,如果id已經存在就插入name或者level,不存在就建立,寫完了資料就是合併的直接讀出來就行了。也不用後續處理。
2樓:陽光的雷咩咩
應該沒有比迴圈更快的方法,如果是一次性操作,讓使用者等待一下也無所謂;如果是重複操作,建議把結果快取起來。
3樓:
id都是1-1000k,可以兩個list按照id快排,然後遍歷列表1,按照同索引訪問列表2的level屬性,賦值給列表1即可
4樓:匿名使用者
用linq寫比較簡潔,**如下:
using system.collections.generic;
using system.linq;
listaa= ... ;
listbb= ... ;
list
results = aa.select(x => new a ).tolist();
results集合就是你要的結果!
5樓:匿名使用者
演算法描述:
1.將aa轉換為字典,以id為鍵,類a的物件為值。
dictionaryd=new dictionary();
foreach(a o in aa)
d.add(o.id,o);
2.遍歷併合並bb
a t;
foreach(a o in bb)}
6樓:異性戀恐懼症
可以試下用linq實現,原理的話,有興趣可以深入瞭解.下面是**實現
system.collections.generic.listaa = new system.collections.generic.list();
system.collections.generic.listbb = new system.collections.generic.list();
// 根據id進行關聯,生成結果集合
system.collections.generic.listresult = (from a in aa.asenumerable()
join b in bb.asenumerable() on a.id equals b.id
//orderby a.id
select new a()
).tolist();
7樓:陽光的晒雨
從演算法上比較同意@一無安慰的演算法, 補充一點, 考慮到可能資料重複以及id不連續的問題, 直接建立兩個長度為100萬的的陣列, 按id賦值到每一位上.
實現方式就比較多了, 主要注意使用執行緒安全的集合最後:
什麼情況來的兩個百萬級的資料在記憶體裡, 這種操作是否不當? 有沒有更好的實現方法?
分批拿資料? 或者使用nosql做中間儲存
8樓:一郎大神
使用linq to list連線後再轉成listvar result= from a in aajoin b in bb
on a.id equals b.id into joinedempdept
from a in joinedempdept.defaultifempty()
select new ;
9樓:匿名使用者
如果id的順序是一樣。aa[i].level=bb[i].level;
10樓:
for (int i = 0; i < aa.count; i++)
11樓:泥蒿
var result=from a in aa join
b in bb on a.id equals b.id
select new a;
12樓:匿名使用者
效能測試
[2019/10/20 22:56:44]test started.
dictionary用時489.6659ms。
linq用時743.9817ms。
效能測試
[2019/10/20 22:59:21]test started.
dictionary用時449.7863ms。
linq用時738.0277ms。
單元測試做了兩次,對比dictionary方法和linq方法,似乎dictionary快一些。
下面是單元測試**
[testmethod]
public void linq()
).tolist();
timespan span = datetime.now - datetime;
writelog($"用時ms。");
result.clear();
}[testmethod]
public void dictionary()
);listresult = dictioanry.select(item => new a
).tolist();
timespan span = datetime.now - datetime;
writelog($"用時ms。");}
c#中 兩個定義相同list
13樓:九頭鳥
list1.addrange(list20);
14樓:孫中呂
ilist a = new arraylist();
ilist b = new arraylist();
(a as arraylist).addrange(b);
兩個對應不同類的list怎麼合併為一個list,兩個類有共同的id
15樓:我愛李沛霞
新建一個類,屬性為這兩個類的物件,然後用list來裝這個新建的類就好了、
c#中查詢list
16樓:
liststrlist = new list();
strlist.add("wpf");
strlist.add("wcf");
strlist.add("wf");
strlist.add("author");
strlist.add("winfx");
strlist.add("linq");
listlists = strlist.findall(s => s == "winfx");
foreach (string str in lists)
17樓:匿名使用者
list.contains() 是否包含
.net怎麼去除list中某兩個欄位相同的資料
18樓:匿名使用者
lst.distinct《實體名》();
list=list.groupby(t=>t.實體中的欄位名).select(t=>t.first()).tolist();
19樓:
1、直接遍歷判斷
2、使用distinct,實體實現iequalitycomparer
20樓:書飛凝
listss = new list();
ss.add(1);
ss.add(1);
ss.add(2);
ss.add(2);
ss.add(3);
ss.add(3);
listss1= ss.distinct().tolist();
//ss1裡只有1,2,3
裡如何查詢相同的內容,WORD裡如何查詢相同的內容
額,word07或者以後,你ctrl f左側貌似可以顯示所有本文中出現那個的內容,你點下就到那個地方了,就能見了吧,少的話手工找找就好了,多的話,你試試樓上那個索引唄 給你個思路,將每一個題目先用替換功能將其變為一個段落 題目開頭的序號要符合一定的規律,就是將題目自身的回車符替換成一個特殊字串,方便...
分別合併相同域名下的JS檔案和CSS檔案可減少請求數
意思就是說如果你的網頁呼叫了多個js和css檔案,而且都是同一個域名下的,那麼就可以把它們分別合併為一個js檔案和css檔案,這樣可以減少http請求數。合併的方法很簡單的,只要開啟記事本,然後把一個個檔案分別複製貼上進來再儲存為一個新檔案,然後在網頁上把其他檔案的連結語句刪掉,再新增新檔案的即可。...
請教SQL可以把ID相同的兩行資料合併到一起嗎
如果每個id的資料都有兩行 可以使用下面的語句 sql server select identity int,1,1 sx a.id,a.name b.name c into tmpdata from table1 a inner join table1 b on a.id b.id and a.n...