class Program
{
static void Main(string[] args)
{
List<Book> books = new List<Book>
{
new Book
{
Name="C# in Depth",
Authors = new List<Author>
{
new Author
{
FirstName = "Jon", LastName="Skeet"
},
new Author
{
FirstName = "Jon", LastName="Skeet"
},
}
},
new Book
{
Name="LINQ in Action",
Authors = new List<Author>
{
new Author
{
FirstName = "Fabrice", LastName="Marguerie"
},
new Author
{
FirstName = "Steve", LastName="Eichert"
},
new Author
{
FirstName = "Jim", LastName="Wooley"
},
}
},
};
var temp = books.SelectMany(book => book.Authors).Distinct();
foreach (var author in temp)
{
Console.WriteLine(author.FirstName + " " + author.LastName);
}
Console.Read();
}
}
public class Book
{
public string Name { get; set; }
public List<Author> Authors { get; set; }
}
public class Author
{
public string FirstName { get; set; }
public string LastName { get; set; }
public override bool Equals(object obj)
{
return true;
//if (obj.GetType() != typeof(Author)) return false;
//else return ((Author)obj).FirstName == this.FirstName && ((Author)obj).FirstName == this.LastName;
}
}
এটি "লিনিকিউ ইন অ্যাকশনে" উদাহরণের ভিত্তিতে তৈরি। তালিকা 4.16।
এটি জোন স্কিটকে দু'বার মুদ্রণ করে। কেন? এমনকি লেখক শ্রেণিতে আমি সমান পদ্ধতিতে ওভাররাইড করার চেষ্টা করেছি। এখনও ডিস্টিন্ট কাজ করে না বলে মনে হচ্ছে। আমি কী মিস করছি?
সম্পাদনা: আমি == এবং! = অপারেটর ওভারলোডও যুক্ত করেছি। এখনও কোন সাহায্য।
public static bool operator ==(Author a, Author b)
{
return true;
}
public static bool operator !=(Author a, Author b)
{
return false;
}