Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>The main understanding is to use the IEqualityComparer, the class LambdaCustomComparer is a helper to do that using LINQ dynamically. </p> <p>You need copy and Paste this :</p> <hr> <pre><code>public class User { public string Name { get; set; } public string Sex { get; set; } public DateTime Birthday { get; set; } public int? FilterId { get; set; } } public class LambdaCustomComparer&lt;T&gt; : IEqualityComparer&lt;T&gt; { private readonly Func&lt;T, T, bool&gt; lambdaComparer; private readonly Func&lt;T, int&gt; lambdaHash; public LambdaCustomComparer(Func&lt;T, T, bool&gt; lambdaComparer, bool ignoreHashcode = true) { if (lambdaComparer == null) throw new ArgumentNullException("lambdaComparer"); this.lambdaComparer = lambdaComparer; if (ignoreHashcode) lambdaHash = obj =&gt; 0; else lambdaHash = EqualityComparer&lt;T&gt;.Default.GetHashCode; } public LambdaCustomComparer(Func&lt;T, T, bool&gt; lambdaComparer, Func&lt;T, int&gt; lambdaHash) { if (lambdaComparer == null) throw new ArgumentNullException("lambdaComparer"); if (lambdaHash == null) throw new ArgumentNullException("lambdaHash"); this.lambdaComparer = lambdaComparer; this.lambdaHash = lambdaHash; } public bool Equals(T x, T y) { return lambdaComparer(x, y); } public int GetHashCode(T obj) { return lambdaHash(obj); } } var list = new List&lt;User&gt; { new User() {Name = "Josh", Sex= "M", Birthday = DateTime.Now, FilterId = null}, new User() {Name = "John", Sex= "M", Birthday = DateTime.Now, FilterId = null}, new User() {Name = "Jane", Sex= "F", Birthday = DateTime.Now, FilterId = null}, new User() {Name = "Josh", Sex= "M", Birthday = DateTime.Now, FilterId = 1}, new User() {Name = "John", Sex= "M", Birthday = DateTime.Now, FilterId = null}, }; var comparer = new LambdaCustomComparer&lt;User&gt;((a, b) =&gt; a.Name == b.Name &amp;&amp; a.Birthday.Date == b.Birthday.Date &amp;&amp; a.Sex == b.Sex &amp;&amp; a.FilterId == b.FilterId); var distinctList = list.GroupBy(user =&gt; user, comparer).ToDictionary(a =&gt; a.Key, b =&gt; b.ToArray()); </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload