powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как передать linq-выражение параметром метода?
8 сообщений из 8, страница 1 из 1
Как передать linq-выражение параметром метода?
    #39435774
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такую конструкцию хочу получить:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
void Method1<T>(object dbset, ??? whereExpr=null, ??? orderEpr=null){
    var q =(IQueryable<T>)dbset;
    if(orderExpr!=null) q.OrderBy(orderExpr);
    if(whereExpr!=null) q.Where(whereExpr);
    var l = q.ToList();
}


Method(xxx, ??? ???);

Соответственно вопрос: что писать вместо ???
...
Рейтинг: 0 / 0
Как передать linq-выражение параметром метода?
    #39435786
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy, что-то вроде:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
void Main()
{
	var q = Properties;
	
	var lst = q.Method1(o => o.ID == 0, o => o.DisplayName);
	
	lst.Dump();
	
}

public static class Ext
{
	public static List<T> Method1<T>(this IQueryable<T> dbset, Expression<Func<T, bool>> whereExpr=null, Expression<Func<T, string>> orderExpr=null){
		var q = dbset;
		if(orderExpr!=null) q = q.OrderBy(orderExpr);
		if(whereExpr!=null) q = q.Where(whereExpr);
		return q.ToList();
	}
}

...
Рейтинг: 0 / 0
Как передать linq-выражение параметром метода?
    #39435788
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buser, только с public static List<T> Method1<T, TKey>(this IQueryable<T> dbset, Expression<Func<T, bool>> whereExpr=null, Expression<Func<T, TKey>> orderExpr=null)
...
Рейтинг: 0 / 0
Как передать linq-выражение параметром метода?
    #39435819
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вариант с <T, TKey> не устраивает, но расширение IQueryable это мысль, спасибо.
...
Рейтинг: 0 / 0
Как передать linq-выражение параметром метода?
    #39435822
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyВариант с <T, TKey> не устраивает
На вызов это не повлияет...
...
Рейтинг: 0 / 0
Как передать linq-выражение параметром метода?
    #39435827
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buserAntonariyВариант с <T, TKey> не устраивает
На вызов это не повлияет...просто OrderBy нужен не всегда, а TKey при таком подходе обязательно указывать.

Properties.OrderBy(o => o.DisplayName).Method1() это тоже самое, что Properties.Method1(o => o.DisplayName), так ведь?
...
Рейтинг: 0 / 0
Как передать linq-выражение параметром метода?
    #39435844
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy, ага... так
...
Рейтинг: 0 / 0
Как передать linq-выражение параметром метода?
    #39435864
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

речь идёт о спецификации?
городить метод с Where и OrderBy epxressions не имеет смысла, если проще передать IQueryable

один из способов

IQueryable<T> Method1<T>(IQueryable<T> source)

для Where и Order также могут быть переданы Func<IQueryable<T>, IQueryable<T>>, который выполнят необходимые действия над запросом.

но вообще, это лучше оформить как спецификации, погугли, на эту тему много было
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как передать linq-выражение параметром метода?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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