почему так работает, а по другому не работает?

Регистрация
08.07.2015
Сообщения
2 848
Благодарностей
712
Баллы
113
Код:
var sourceList = project.Lists["List"];

string[] cars = { "Nissan", "Aston Martin", "Chevrolet", "Alfa Romeo", "Chrysler", "Dodge", "BMW",
                            "Ferrari", "Audi", "Bentley", "Ford", "Lexus", "Mercedes", "Toyota", "Volvo", "Subaru", "Жигули :)"};

var sequence = cars.Select(p => new { p, p.Length });

foreach (var i in sequence)

        sourceList.Add(i + " ");

Почему вот так не работает?
Код:
var sourceList = project.Lists["List"];

string[] cars = { "Nissan", "Aston Martin", "Chevrolet", "Alfa Romeo", "Chrysler", "Dodge", "BMW",
                            "Ferrari", "Audi", "Bentley", "Ford", "Lexus", "Mercedes", "Toyota", "Volvo", "Subaru", "Жигули :)"};

var sequence = cars.Select(p => new { p, p.Length });

foreach (var i in sequence)

        sourceList.Add(i);
Если выводить в консоль то работает!
 

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
Потому что в project.Lists["List"] тип string надо вставлять, а ты вставляешь анонимный тип, а в 1 варианте скорее всего вызывается метод ToString()
 
Регистрация
08.07.2015
Сообщения
2 848
Благодарностей
712
Баллы
113
Потому что в project.Lists["List"] тип string надо вставлять, а ты вставляешь анонимный тип, а в 1 варианте скорее всего вызывается метод ToString()
покажи как правильно записать во втором варианте?!
 

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
Регистрация
08.07.2015
Сообщения
2 848
Благодарностей
712
Баллы
113
Регистрация
08.07.2015
Сообщения
2 848
Благодарностей
712
Баллы
113
Еще вот с этим неясно
Код:
var sourceList = project.Lists["List"];

string[] cars = { "Nissan", "Aston Martin", "Chevrolet", "Alfa Romeo", "Chrysler", "Dodge", "BMW",
                            "Ferrari", "Audi", "Bentley", "Ford", "Lexus", "Mercedes", "Toyota", "Volvo", "Subaru", "Жигули :)"};

var carObj = cars.Select(p => new { LastName = p, Length = p.Length });

foreach (var i in carObj)

        sourceList.Add("Автомобиль " +i.LastName+ " имеет длину " +i.Length+ " символов");
если записываем в таком формате: sourceList.Add("Автомобиль " +i.LastName+ " имеет длину " +i.Length+ " символов"); то нормально отрабатывает.

если записываем так: sourceList.Add("Автомобиль {0} имеет длину {1} символов", i.LastName, i.Lengt); то выдает ошибку!
 

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
туже что и в первом варианте )
просто добавь к i метод ToString вот так:
Код:
sourceList.Add(i.ToString());
Еще вот с этим неясно
Код:
var sourceList = project.Lists["List"];

string[] cars = { "Nissan", "Aston Martin", "Chevrolet", "Alfa Romeo", "Chrysler", "Dodge", "BMW",
                            "Ferrari", "Audi", "Bentley", "Ford", "Lexus", "Mercedes", "Toyota", "Volvo", "Subaru", "Жигули :)"};

var carObj = cars.Select(p => new { LastName = p, Length = p.Length });

foreach (var i in carObj)

        sourceList.Add("Автомобиль " +i.LastName+ " имеет длину " +i.Length+ " символов");
если записываем в таком формате : sourceList.Add("Автомобиль " +i.LastName+ " имеет длину " +i.Length+ " символов"); то нормально отрабатывает.
если записываем так:
sourceList.Add(
"Автомобиль {0} имеет длину {1} символов", i.LastName, i.Lengt
);
то выдает ошибку!
А здесь на i.Length тоже вызови метод ToString(). Вся суть в том, что у метода Add в данном случае нету перегрузки, которая бы принимала тип object, вот и сыпятся ошибки.
А на консоли выводилось потому, что в ней есть перегрузка метода, принимающая тип object
 
  • Спасибо
Реакции: masterLomaster
Регистрация
08.07.2015
Сообщения
2 848
Благодарностей
712
Баллы
113
А здесь на i.Length тоже вызови метод ToString(). Вся суть в том, что у метода Add в данном случае нету перегрузки, которая бы принимала тип object, вот и сыпятся ошибки.
чето тут не работает!
 

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
чето тут не работает!
Все работает, только лист изменил на стандартный, а не зеннолабовский, но по сути это должно быть практически одно и то же
2f1321e970584c10990d33a44594013a.png
А по последнему варианту используй string.Format:
Код:
sourceList.Add(string.Format("Автомобиль {0} имеет длину {1} символов", i.LastName, i.Length));
 
Последнее редактирование:
Регистрация
08.07.2015
Сообщения
2 848
Благодарностей
712
Баллы
113
Все работает, только лист изменил на стандартный, а не зеннолабовский, но по сути это должно быть практически одно и то же
Посмотреть вложение 18642
А по последнему варианту использую string.Format
да у меня в Зенке и так работает: sourceList.Add("Автомобиль " +i.LastName+ " имеет длину " +i.Length+ " символов");

ты в таком формате в зенке сделай: sourceList.Add("Автомобиль {0} имеет длину {1} символов", i.LastName, i.Lengt);
 

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
да у меня в Зенке и так работает: sourceList.Add("Автомобиль " +i.LastName+ " имеет длину " +i.Length+ " символов");

ты в таком формате в зенке сделай: sourceList.Add("Автомобиль {0} имеет длину {1} символов", i.LastName, i.Lengt);
выше дописал к своему ответу о string.Format, а то получается, что ты используешь перегрузку с 3 переменными
 
  • Спасибо
Реакции: masterLomaster
Регистрация
08.07.2015
Сообщения
2 848
Благодарностей
712
Баллы
113

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
65d34cc19a21493eb36d4ce5abc657a0.png
Вот у консоли есть уже готовый формат наподобие string.Format, а у метода Add его нету
 
Регистрация
08.07.2015
Сообщения
2 848
Благодарностей
712
Баллы
113
потому что указывая все через запятую компилятор думает, что ты указываешь 3 различные переменные для метода Add
то есть если явно не указывать string.Format он думает что
это 1 переменная "Автомобиль {0} имеет длину {1} символов",
это 2 переменная i.LastName,
а это 3 переменная i.Length
так чтоли?
 

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
то есть если явно не указывать string.Format он думает что
это 1 переменная "Автомобиль {0} имеет длину {1} символов",
это 2 переменная i.LastName,
а это 3 переменная i.Length
так чтоли?
да, нету форматтера, как у консоли
 
Регистрация
08.07.2015
Сообщения
2 848
Благодарностей
712
Баллы
113

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)