-2
public static bool CompareLists(List<Product> lstProduct1, List<Product> lstProduct2, List<DuplicateExpression> DuplicateExpression)
    {
        string[] Fields = DuplicateExpression.Select(x => x.ExpressionName).ToArray();
        //var JoinExp = lstProduct1.Join(lstProduct2, new[] { "ProductName", "ProductCode" });
        var JoinExp = lstProduct1.Join(lstProduct2, Fields);
        bool IsSuccess = CompareTwoLists(lstProduct1, lstProduct2, (listProductx1, listProductx2) => JoinExp.Any());

        return IsSuccess;
    }

How to convert above function as <T> function?. Actually this is a List comparison function.

Pradu
  • 61
  • 6
  • 3
    If you want generic function for list comparison, you can find answer here http://stackoverflow.com/questions/3669970/compare-two-listt-objects-for-equality-ignoring-order – eocron Sep 09 '16 at 05:57
  • Possible duplicate of [How to create Expression filter for List Comparison?](http://stackoverflow.com/questions/39387200/how-to-create-expression-filter-for-t-list-comparison) – ASh Sep 09 '16 at 06:52

1 Answers1

1

SequenceEqual solves your problem.

new[] { "A", "B" }.SequenceEqual(new[] { "A", "B" }).Should().BeTrue();

Here is the source code.

public static bool SequenceEqual<TSource>(this IEnumerable<TSource> first, IEnumerable<TSource> second, IEqualityComparer<TSource> comparer)
{
    if (comparer == null) comparer = EqualityComparer<TSource>.Default;
    if (first == null) throw Error.ArgumentNull("first");
    if (second == null) throw Error.ArgumentNull("second");
    using (IEnumerator<TSource> e1 = first.GetEnumerator())
    using (IEnumerator<TSource> e2 = second.GetEnumerator())
    {
        while (e1.MoveNext())
        {
            if (!(e2.MoveNext() && comparer.Equals(e1.Current, e2.Current)))
                return false;
        }
        if (e2.MoveNext())
            return false;
    }
    return true;
}

In your case you could elect to replace IEnumerable<TSource> with IList<TSource> or even List<TSource> ideally the highest level of abstraction is preferred.

Jim
  • 14,952
  • 15
  • 80
  • 167