Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Лямбда выражение как параметр функции, Linq / 6 сообщений из 6, страница 1 из 1
30.10.2013, 10:57
    #38446262
Кифирчик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лямбда выражение как параметр функции, Linq
Чую что возможно реализовать примерно такое, но уже несколько запутался не могу с синтаксисом увязать и не нахожу подходящих примеров (

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
// есть класс
class MyClass
{
        public string ID;
        public string Name;
}

// Linq таблица с классом MyClass
// и некоторый LinqContext

public List<T> F1<T>(Func<???> condition)
{
      List<T> result = new List<T>();
      using(LinqContext ctx = new LinqContext())
      {
             // определяем что за класс
                switch(typeof(T).Name)
                {
                    case "MyClass":
                    // делаем запрос к нужной таблице с полученным условием
                    result = ctx.MyClasses ??? condition;
                    break;
                }
      }
      return result;
}

public void Main()
{
     // формируем условие для запроса
     var condition = (???)MyClasses.Where(c=>c.ID == 4 || c.Name == "blabla");

     // передаем это "условие" как параметр функции
     var result = F1(condition);
}



другими словами, как сформировать через лямбда выражение условие запроса к Linq таблице,
передать его в виде параметра к функции и использовать внутри функции в Linq запросе?
- как условие (для конретного класса) сделать переменной?
- как определить параметр в функции через который передается "условие" (классы для которых передается "условие" лямбдой могут быть разные?
- как потом прилепить это "условие" к запросу?
...
Рейтинг: 0 / 0
30.10.2013, 11:00
    #38446274
pation
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лямбда выражение как параметр функции, Linq
Кифирчик,

Expresion
...
Рейтинг: 0 / 0
30.10.2013, 11:24
    #38446318
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лямбда выражение как параметр функции, Linq
КифирчикFunc<???>
Func<T, bool>
...
Рейтинг: 0 / 0
30.10.2013, 13:32
    #38446580
Кифирчик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лямбда выражение как параметр функции, Linq
МСУКифирчикFunc<???>
Func<T, bool>
окай, а как var condition = (???)MyClasses.Where(c=>c.ID == 4 || c.Name == "blabla"); ?
как result = ctx.MyClasses ??? condition;?
...
Рейтинг: 0 / 0
30.10.2013, 13:38
    #38446595
Кифирчик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лямбда выражение как параметр функции, Linq
Кажется понял
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
public List<T> F1<T>(Func<T,bool> condition)
{
      List<T> result = new List<T>();
      using(LinqContext ctx = new LinqContext())
      {
             // определяем что за класс
                switch(typeof(T).Name)
                {
                    case "MyClass":
                    // делаем запрос к нужной таблице с полученным условием
                    result = ctx.MyClasses.Where(condition);
                    break;
                }
      }
      return result;
}

public void Main()
{
     // формируем условие для запроса
     var condition = c => c.ID == 4 || c.Name == "blabla";

     // передаем это "условие" как параметр функции
     var result = F1(condition);
}
...
Рейтинг: 0 / 0
30.10.2013, 13:46
    #38446610
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лямбда выражение как параметр функции, Linq
Кифирчикокай, а как var condition = (???)MyClasses.Where(c=>c.ID == 4 || c.Name == "blabla"); ?

Код: c#
1.
Func<T, bool> filter = d => d.Date > DateTime.Now;
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Лямбда выражение как параметр функции, Linq / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]