linq隨機選擇和差集

2021-06-21 16:00:11 字數 1933 閱讀 2916

群裡一妹子問了個問題,集合隨機選取10條,然後在剩下的資料裡面再隨機取,大致可以用下面的思路(用的linq)

int tt = ;

console.writeline ("**********==隨機取10個**********=");

//這裡直接tolist,由預編譯表示式轉物件,不然下面的except會得不到想要的差集

var q = tt.orderby (e => guid.newguid ()).take (10).tolist ();

q.foreach (x => console.writeline (x));

console.writeline ("**********==取得差集**********=");

var l = tt.except (q);

l.tolist ().foreach (x => console.writeline (x));

double numbers1 = ;

double numbers2 = ;

ienumerableonlyinfirstset = numbers1.except(numbers2);

foreach (double number in onlyinfirstset)

console.writeline(number);

如果希望比較某種自定義資料型別的物件的序列,則必須在您的類中實現 

iequalitycomparer

泛型介面

public class product : iequatable

public int code

public bool equals(product other)

// if equals() returns true for a pair of objects

// then gethashcode() must return the same value for these objects.

public override int gethashcode()

}

new product ,

new product };

//get all the elements from the first array

//except for the elements from the second array.

ienumerableexcept =

fruits1.except(fruits2);

foreach (var product in except)

console.writeline(product.name + " " + product.code);

/*this code produces the following output:

orange 4

lemon 12

*/當然,except本身提供乙個過載,可以引數化比較器,參考:

new product ,

new product };

//get all the elements from the first array

//except for the elements from the second array.

ienumerableexcept =

fruits1.except(fruits2, new productcomparer());

foreach (var product in except)

console.writeline(product.name + " " + product.code);

/*this code produces the following output:

orange 4

lemon 12

*/

用Linq取兩個陣列的差集

兩個陣列,取其差集,用linq做比較方便,效率也比較高,具體如下示例 有兩個陣列list1 和list2 如下 listlist1 new list list1.add 1 list1.add 2 list1.add 3 listlist2 new list list2.add 1 list2.ad...

shell 資料的並集和差集

統計資料時經常會有這樣的要求,有檔案 和檔案 現在需要知道檔案中的資料,那些是 和 共有的,那些只出現在 檔案中 或者那些只出現在 檔案中 這樣的需求可以通過uniq命令完成。uniq d 會輸出重複行 uniq u 只顯示唯一的行 利用uniq sort 略施小計就能搞定了 例如 檔案 10010...

excel取差集 Excel 求差集和並集

1.excel求兩列差集 查詢a列中與b列不同的部分 示例 行號 a列 b列 c列結果 a b 1 1 3 1 2 2 4 2 3 3 4 4 5 5 5 方法一 在c列 結果列 第一行輸入 if countif b b,a2 0,a2,向下複製公式。滑鼠放在c1單元格右下角處,變為黑色十字 時,右...