แทนที่จะเป็นการแปลงอย่างง่ายของ IEnumerable ไปเป็น HashSet มันมักจะสะดวกในการแปลงคุณสมบัติของวัตถุอื่นเป็น HashSet คุณสามารถเขียนสิ่งนี้เป็น:
var set = myObject.Select(o => o.Name).ToHashSet();
แต่ความชอบของฉันคือใช้ตัวเลือก:
var set = myObject.ToHashSet(o => o.Name);
พวกเขาทำสิ่งเดียวกันและอย่างที่สองก็สั้นลงอย่างเห็นได้ชัด แต่ฉันพบว่าสำนวนที่เหมาะกับสมองของฉันดีกว่า (ฉันคิดว่ามันเป็นเหมือน ToDictionary)
นี่คือวิธีการขยายที่จะใช้พร้อมการสนับสนุนตัวเปรียบเทียบแบบกำหนดเองเป็นโบนัส
public static HashSet<TKey> ToHashSet<TSource, TKey>(
this IEnumerable<TSource> source,
Func<TSource, TKey> selector,
IEqualityComparer<TKey> comparer = null)
{
return new HashSet<TKey>(source.Select(selector), comparer);
}
HashedSet
ส่วนที่ มันเป็นเพียงความสับสนตั้งแต่C#
และไม่ได้มีอะไรที่เรียกว่าLINQ
HashedSet