c listt查詢相同的合併,c list t 2個查詢相同的合併

2022-08-20 14:11:50 字數 4014 閱讀 8065

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泛型集合裡的匹配資料問題,怎麼把匹配的條件(winfx)當作引數來傳遞呢?

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...