-2

我正在使用验证属性将对象列表从视图发布到控制器时检查是否有任何重复项。它有效,但我想知道是否有更好的方法可以遵循(可能是添加客户端验证)。任何反馈表示赞赏。

[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;
    }
}
4

1 回答 1

2

你做的方式还不够好吗?我做类似的事情:

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

foreach (var d in duplicates)
    ;//dosomething

它基于 MSDN 条目,Find Duplicates using LINQ

于 2013-01-07T20:08:30.010 回答