EF之通過不同條件查找去重複
Enumerable.Distinct Method(IEnumerable, IEqualityComparer)
也就是使用的Distinct(參數1,參數2);
參數1為原數據,參數2為比較數據
通過IEqualityComparer
引用的名稱空間:System.Linq
程序集:System.Core (在 System.Core.dll下)
語法:
public static IEnumerable 參數:
this IEnumerable
IEqualityComparer
)
原數據:
類型:System.Collections.Generic.IEnumerable 比較數據: 類型 : System.Collections.Generic.IEqualityComparer 返回數據: 類型: System.Collections.Generic.IEnumerable 當給的參數為空時拋出的異常: 備註: 該方法通過使用延遲執行來實現。 立即返回值是存儲執行操作所需的所有信息的對象。 通過直接調用其GetEnumerator方法或在Visual C#或Visual Basic中使用foreach進行枚舉,直到對象被枚舉為止,才執行此方法所表示的查詢。不同的 示例: 以下示例顯示如何實現可在Distinct public class Product // 產品類的自定義比較器 //檢查比較對象是否引用相同的數據 //檢查所比較的對象是否為空 //檢查產品的屬性是否相等 // 如果Equals對一對對象返回true public int GetHashCode(Product product) //如果它不為空,獲取名稱欄位的
hashCode
int hashProductName = product.Name == null ? 0 : product.Name.GetHashCode; //獲取代碼欄位的hashCode int hashProductCode = product.Code.GetHashCode; //計算產品的hashCode return hashProductName ^ hashProductCode; } }
實現此比較器後,可以使用Distinct Product products = { new Product { Name = "apple", Code = 9 }, //排除重複 IEnumerable foreach (var product in noduplicates) /*
指的是從中刪除重複元素的序列
這個是與原數據的比較值
返回原數據中不重複的序列
{
public string Name { get; set; }
public int Code { get; set; }
}
class ProductComparer : IEqualityComparer
{
// 如果產品的名稱和產品編號相同,則產品相同
public bool Equals(Product x, Product y)
{
if (Object.ReferenceEquals(x, y)) return true;
if (Object.ReferenceEquals(x, null) || Object.ReferenceEquals(y, null))
return false;
return x.Code == y.Code && x.Name == y.Name;
}
// 那麼GetHashCode必須為這些對象返回相同的值。那麼GetHashCode必須為這些對象返回相同的值。
{
//檢查該對象是否為空
if (Object.ReferenceEquals(product, null)) return 0;
new Product { Name = "orange", Code = 4 },
new Product { Name = "apple", Code = 9 },
new Product { Name = "lemon", Code = 12 } };
products.Distinct(new ProductComparer);
Console.WriteLine(product.Name + " " + product.Code);
返回的值如下:
apple 9
orange 4
lemon 12
*/
TAG:科技優家 |
※若這4個條件「不理想」,夫妻想生二胎要慎重,以免將來後悔
※重複重複再重複,直到形成條件反射
※家裡條件再差,孕婦這2項檢查也不能不做,對胎寶太重要了
※不想婚後矛盾重重,這3個條件得先考察好,否則易嫁錯人
※硬體條件不過關,申請季末如何拿下名校OFFER
※對不起,你不符合這些院校的提前面試申請條件
※想要條件好,又坐懷不亂的人可以找到,但同時要匹配同樣的條件
※同樣條件人辦理簽證,不同地方結果卻差這麼多
※只要滿足這3個條件,不離婚也可以直接撤銷婚姻,相當於沒結過
※想閉關,必須具備這幾個條件
※印度準備重返FGFA項目 可提出的條件俄羅斯會答應嗎?
※這3項產檢,不符合條件只是浪費錢,不是所有孕婦都需要檢查
※離婚男人,不具備這四個條件,很難再找到另一半
※不止一次的聽人說:對方條件還不錯,那就結婚吧
※條件再不好,在孩子的這幾件事上也要捨得
※不管在哪裡上班,如果你不具備這個條件,BAT背景也救不了你!
※決定離婚的時候,你肯定是考慮好了這四個條件,不然就輕易不要離
※很多人不是不想結婚,而是完全沒條件結婚,結不起婚!
※搞笑GIF:結婚也可以,家裡就這條件
※二胎家庭經驗之談:不想悲劇重演,滿足不了這3個條件別生二胎