Frage

I am checking if there are any duplicates while posting list of objects from view to controller by using validation attribute. It works but I would like to know if there is any better approach to follow (may be adding client side validation). Any feedback appreciated.

[AttributeUsageAttribute(AttributeTargets.Property, AllowMultiple = true, Inherited = false)]
public class DuplicateObjectAttribute : ValidationAttribute
{
    public override bool IsValid(object value)
    {
       if (value != null)
       {
         if (value.GetType() == typeof(List<OrdersVM>))
         {
             List<OrdersVM> objOrdersList = (List<OrdersVM>)value;
             if (objOrdersList != null && objOrdersList.Count > 0)
             {
                 if (objOrdersList.Select(p => p.OrderId).Distinct().Count() != objOrdersList.Select(p => p.OrderId).Count())
                 return false;
             }
         }
       }
       return true;
    }
}
War es hilfreich?

Lösung

Is the way you are doing not good enough? I do something similar:

var duplicates = listOfItems
    .GroupBy(i => i)
    .Where(g => g.Count() > 1)
    .Select(g => g.Key);

foreach (var d in duplicates)
    ;//dosomething

Which is based on the MSDN entry, Find Duplicates using LINQ

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top