Как я формирую хорошего делегата предиката для Нахождения () чего-то в моем Списке <T>?

Чтобы проверить все необходимые поля формы без кнопки отправки, вы можете использовать функцию ниже.

Вы должны назначить требуемый атрибут элементам управления.

  $("#btnSave").click(function () {
    $(":input[required]").each(function () {                     
        var myForm = $('#form1');
        if (!$myForm[0].checkValidity()) 
          {                
            $(myForm).submit();              
          }
        });
  });
23
задан Pretzel 10 March 2009 в 15:17
поделиться

5 ответов

Хорошо, в .NET 2.0 вы можете использовать делегатов, например:

static Predicate<Car> ByYear(int year)
{
    return delegate(Car car)
    {
        return car.Year == year;
    };
}

static void Main(string[] args)
{
    // yeah, this bit is C# 3.0, but ignore it - it's just setting up the list.
    List<Car> list = new List<Car>
    {
        new Car { Year = 1940 },
        new Car { Year = 1965 },
        new Car { Year = 1973 },
        new Car { Year = 1999 }
    };
    var car99 = list.Find(ByYear(1999));
    var car65 = list.Find(ByYear(1965));

    Console.WriteLine(car99.Year);
    Console.WriteLine(car65.Year);
}
30
ответ дан Matt Hamilton 29 November 2019 в 00:44
поделиться

Можно использовать лямбда-выражение следующим образом:

myCar = carList.Find(car => car.Year == 1999);
30
ответ дан Dan Finucane 29 November 2019 в 00:44
поделиться

Или вы можете использовать анонимного делегата:

Car myCar = cars.Find(delegate(Car c) { return c.Year == x; });

// If not found myCar will be null
if (myCar != null)
{
     Console.Writeline(myCar.Make + myCar.Model);
}
15
ответ дан Todd 29 November 2019 в 00:44
поделиться

Так как Вы не можете использовать лямбду, можно просто заменить ее анонимным делегатом.

myCar = carList.Find(delegate(Car car) { return car.Year == i; });
7
ответ дан Ajaxx 29 November 2019 в 00:44
поделиться

Хм. Думая об этом больше, вы можете использовать карри для возврата предиката.

Func<int, Predicate<Car>> byYear = i => (c => c.Year == i);

Теперь вы можете передать результат этой функции (который является предикатом) в ваш метод Find:

my99Car = cars.Find(byYear(1999));
my65Car = cars.Find(byYear(1965));
2
ответ дан Matt Hamilton 29 November 2019 в 00:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: