powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / инициализация в if
23 сообщений из 48, страница 2 из 2
инициализация в if
    #37562428
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лёша, по-моему Вы нереально запутали мальца, сами запутались, еще и меня хотите запутать.
...
Рейтинг: 0 / 0
инициализация в if
    #37562433
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще раз, восстанавливаем картину:

Алексей КErik_Kartmann
Код: plaintext
1.
2.
3.
4.
var expr =
from c in customers
where c.City == "London"
select c;



нужно в иф засунутть., или в switch
получится что-то вроде

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
if(что-то там)
{
var expr =
from c in customers
where c.City == "London"
select c;
}
else
{
var expr =
from c in customers
where c.City == "Moscow"
select c;
}



Как мне сделать, чтобы "var expr" до ифа объявить?
Никак.

Алексей, Вы согласны, что не правы?
...
Рейтинг: 0 / 0
инициализация в if
    #37562435
Erik_Kartmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЧё? )
с сегодня, 08:37
по сегодня, 08:45

var items = Enumerable.Range(1, 0).Select(d => new { Name = "", Age = 0});

создался var. Без создания вспомогательного класса, структуры, и пр.
...
Рейтинг: 0 / 0
инициализация в if
    #37562441
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Erik_Kartmann, выйдите из комы. Чё хотите-то?

Я на вопрос ответил, как var объявить до начала условия?
...
Рейтинг: 0 / 0
инициализация в if
    #37562480
Erik_Kartmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так.. ребут!
А допустим так.. То, что в ифе мне нужно вытащить

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
if(что-то там)
{
var expr =
from c in customers
where c.City == "London"
select new{c.id, c.Name};
}
else
{
var expr =
from c in customers
where c.City == "Moscow"
select new{c.id, c.Name};
}



вижу объявление до ифа только таким:
Код: plaintext
1.
var items = Enumerable.Range(1, 100).Select(d => new { id = 0, Name = "" });


а в условии тогда:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
if(что-то там)
{
items  =
from c in customers
where c.City == "London"
select new{id = c.id, name =c.Name};
}


потом когда вышли из условий иф эльз - работаем с items .
...
Рейтинг: 0 / 0
инициализация в if
    #37562502
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Erik_Kartmann, чтобы Вас однозначно понимали, сделайте тестовый работающий пример, а не эти ошметки.
...
Рейтинг: 0 / 0
инициализация в if
    #37562521
Erik_Kartmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ok
...
Рейтинг: 0 / 0
инициализация в if
    #37562535
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУТС работает с типизированной сущностью.Из прочтения вышенаписанного мне так показалось. В противном случае вопрос про var не имеет смысла. :-)
МСУВо-вторых, где было сказано про "пределами области его видимости"?ТС пишет: "Как мне сделать, чтобы "var expr" до ифа объявить?"
...
Рейтинг: 0 / 0
инициализация в if
    #37562873
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КИз прочтения вышенаписанного мне так показалось. В противном случае вопрос про var не имеет смысла. :-)
Почему? )
Алексей КОт анонимных классов придётся отказаться.
Почему? )
...
Рейтинг: 0 / 0
инициализация в if
    #37562960
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУПочему? )Теперь это уже не важно. :-)
...
Рейтинг: 0 / 0
инициализация в if
    #37563263
Erik_Kartmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУErik_Kartmann, чтобы Вас однозначно понимали, сделайте тестовый работающий пример, а не эти ошметки.
не знаю. придумывал, придумывал. в итоге нашёл чей-то.
Код: 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.
36.
37.
38.
39.
40.
41.
42.
43.
44.
            var sts = new List<Student>
                          {
                              new Student{Name = "Vasya", Fak="U", Mark=5},
                              new Student{Name = "Vasya", Fak="U", Mark=5},
                              new Student{Name = "Vasya", Fak="U", Mark=5},
                              new Student{Name = "Vasya", Fak="U", Mark=5},
                              new Student{Name = "Petya", Fak="U", Mark=2},
                              new Student{Name = "Kolya", Fak="U", Mark=4},
                              new Student{Name = "Sasha", Fak="E", Mark=5},
                              new Student{Name = "Masha", Fak="E", Mark=4},
                              new Student{Name = "Masha", Fak="E", Mark=4},
                              new Student{Name = "Sveta", Fak="E", Mark=3},
                              new Student{Name = "Luda", Fak="F", Mark=1},
                              new Student{Name = "Max", Fak="F", Mark=5},
                              new Student{Name = "Alex", Fak="F", Mark=2},
                              new Student{Name = "Motya", Fak="F", Mark=5},
                              new Student{Name = "Gosha", Fak="F", Mark=2},
                              new Student{Name = "Samoil", Fak="V", Mark=3},
                              new Student{Name = "Michael", Fak="V", Mark=4},
                              new Student{Name = "Michael", Fak="V", Mark=4},
                              new Student{Name = "Murad", Fak="V", Mark=5},
                              new Student{Name = "Moton", Fak="V", Mark=3},
                              new Student{Name = "Fox", Fak="V", Mark=4},
                              new Student{Name = "Rabbit", Fak="V", Mark=5},
                              new Student{Name = "Rabbit", Fak="V", Mark=5},
                              new Student{Name = "Poter", Fak="H", Mark=3},
                              new Student{Name = "Fred", Fak="H", Mark=4},
                              new Student{Name = "Lisa", Fak="Y", Mark=5},
                          };

            if(true)
            {
                var expr =
                from c in sts
                where c.FakCity == "V"
                select new{c.Name, c.Mark};
            }
            else
            {
                var expr =
                from c in sts
                where c.FakCity == "H"
                select new { c.Name, c.Mark };
            }


Код: c#
1.
2.
3.
4.
5.
6.
public class Student
{
public string Name;
public string Fak;
public int Mark;
}


вопрос собственно тот же. как мне вне ифа работать с результатом тот, что в ифе ?
...
Рейтинг: 0 / 0
инициализация в if
    #37563610
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Erik_Kartmann, я про предикаты кому рассказывал, стене?

Код: c#
1.
2.
3.
4.
5.
var predicatFak = true ?
    new Predicate<string>(name => { return name == "V"; }) :
    new Predicate<string>(name => { return name == "H"; });

var expr = sts.Where(d => predicatFak(d.Fak));
...
Рейтинг: 0 / 0
инициализация в if
    #37563656
Erik_Kartmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да там у вас какие-то бои динозавров были. я думал это не мне. Ну ладно. щяс позырю.
...
Рейтинг: 0 / 0
инициализация в if
    #37563664
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Erik_KartmannДа там у вас какие-то бои динозавров были.
Та какие там бои, просто рассказал одному паре с востока, что не нужно-таки наезжать на анонимные типы :)
...
Рейтинг: 0 / 0
инициализация в if
    #37563673
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ
Код: c#
1.
var expr = sts.Where(d => predicatFak(d.Fak));



Код: c#
1.
var expr = sts.Where(d => predicatFak(d.Fak)).Select(d => new { d.Name, d.Mark });



... если быть точным.
...
Рейтинг: 0 / 0
инициализация в if
    #37563700
Erik_Kartmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
знаю, вы меня зачморите..
Но всё равно вот вопрос.
Enumerabe<string> = блаблабла что-нибудь.Select(x=>x.string_type_field) //return string

А как студия генерит ИЕнумирейблы, где линкю возвращает, например:
var query = блаблабла что-нибудь.Select(x=> new{x.string_type_field, x.int_type_field});// string и int
в отладчике, если посмотреть - там ересь какая-то
Я сам могу такое объявить вручную?
...
Рейтинг: 0 / 0
инициализация в if
    #37563813
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Erik_KartmannЯ сам могу такое объявить вручную?Ну выяснили уже: IEnumerable<T> (или IQueryable<T>). Но от анонимного класса придётся отказаться.

МСУ предлагает способ как избавится от if-а, из-за которого сужается область видимости результата запроса с анонимным классом.

Попробуйте различные варианты и выберите наиболее подходящий.
...
Рейтинг: 0 / 0
инициализация в if
    #37563838
Erik_Kartmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНо от анонимного класса придётся отказаться.
в пользу собственными руками созданного ж ? Просто не понятно, что там студия делает в таких случаях, когда var объявляется, а селект содержит нью , и просто фигурные скобки, с перечислением полей.
Она что? во время компиляции\или чего-то такого свой класс создаёт где-то, а потом как-то подставляет ?

про предикаты я понял.
...
Рейтинг: 0 / 0
инициализация в if
    #37563843
Erik_Kartmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://msdn.microsoft.com/ru-ru/library/bb397696.aspx
нашёл. Теперь всё более-менее понятно.
...
Рейтинг: 0 / 0
инициализация в if
    #37563888
Erik_Kartmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
А вот, например, ещё ситуация.
а вот если мне в ифе, например нужно к sts сджойнить ещё одну таблицу, и вернуть также 
 select new { c.Name, c.Mark };


пример сейчас попробую напечатать.
...
Рейтинг: 0 / 0
инициализация в if
    #37563904
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да вариантов вагон. Приведу пример с if-ом. join длинно писать.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
var q = from c in sts select c;

if (true)
    q = 
        from c in q
        where c.FakCity == "V"
        select c;
else
    q = 
        from c in q
        where c.FakCity == "H"
        select c;

var q2 = 
    from c in q 
    select new { c.Name, c.Mark };
...
Рейтинг: 0 / 0
инициализация в if
    #37563917
Erik_Kartmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
var q = from c in sts select c;


мм.. если использовать в линкю то сиквел это не отправится же на сервер?
Ну тогда, да. зо гуд!
...
Рейтинг: 0 / 0
инициализация в if
    #37563926
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Erik_Kartmann
Код: c#
1.
var q = from c in sts select c;


мм.. если использовать в линкю то сиквел это не отправится же на сервер?
Ну тогда, да. зо гуд!Пока не вызовите ToList(), ToArray(), First() и т. п. - не отправит. Будет естественным образом "накапливать" вложенные запросы.
...
Рейтинг: 0 / 0
23 сообщений из 48, страница 2 из 2
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / инициализация в if
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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