-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 に答える