2013-09-20 3 views
4

У меня есть DropDownList, ddCourse, что я заселение со следующим запросом LINQ:конкатенации два поля в LINQ выберите

var db = new DataClasses1DataContext(); 
ddCourse.DisplayMember = "COURSE_TITLE"; 
ddCourse.ValueMember = "COURSE_ID"; 
ddCourse.DataSource = db.COURSE_MASTERs.OrderBy(c => c.COURSE_TITLE) 
             .Select(c => new { c.COURSE_ID, c.COURSE_TITLE }) 
             .ToList(); 

Там в другое поле, однако, что я хотел бы объединить в COURSE_TITLE поле в моем выборе. Итак, я хочу, чтобы мой выбор, чтобы выглядеть следующим образом:

.Select(c => new {c.COURSE_ID, c.CIN + " " + c.COURSE_TITLE}) 

Единственная проблема заключается в том, что это, по-видимому, не так, как это делается. Я в основном хочу присоединиться к c.CIN с c.COURSE_TITLE (и иметь место посередине). Может ли кто-нибудь предложить мне несколько указателей на то, как это сделать?

Причина, по которой я хочу сделать это, заключается в том, что прямо сейчас единственное, что появляется в раскрывающемся списке, - это название курса. Я хотел бы, чтобы идентификатор курса (CIN) был объединен с ним, когда он отображается.

EDIT: Для пояснения я использую Linq-to-SQL.

+0

Это всегда важно отметить, какие сообщения исключений вы получите, а также то, что вкус LINQ вы работаете с (linq- к-sql, я думаю?). –

ответ

12

это

.Select(c => new {c.COURSE_ID, COURSE_TITLE =string.Format("{0} {1}" ,c.CIN ,c.COURSE_TITLE)}) 
+5

Я думаю, что string.Format будет работать, только если объекты уже загружены в память. Возможно, я ошибаюсь, но я уверен, что Entity Framework задушит это, и опубликованный код выглядит как EF. – SouthShoreAK

+0

Это сработало! Спасибо! – Kevin

+0

Как насчет 'OrderBy'? – Si8

3

Написать Select так:

.Select(c => new {c.COURSE_ID, COURSE_TITLE = c.CIN + " " + c.COURSE_TITLE}) 

Анонимные типы должны иметь свои имена столбцов, указанных, в случае, если они не могут быть установлены.

Для c.COURSE_ID C# достаточно умен, чтобы сгенерировать член под названием COURSE_ID в анонимном типе. Для выражения c.CIN + " " + c.COURSE_TITLE он не может.

5

Вы должны назвать свою anonymous members: использование

.Select(c => new {COURSE_ID = c.COURSE_ID, COURSE_TITLE = c.CIN + " " + c.COURSE_TITLE}) 
+0

Это решение работает для меня в LINQ to Entities, где 'string.Format' не будет. Благодаря! – c1phr

Смежные вопросы