2013-10-01 4 views
4

У меня есть таблица с несколькими столбцами (clm1-clm10). DataGrid заполняется все столбцы следующим образом:выберите два столбца, используя выражение лямбда

MyTableDomainContext context = new MyTableDomainContext(); 
dataGrid1.ItemsSource = context.DBTables; 
context.Load(context.GetDBTablesQuery()); 

GetDBTablesQuery() определяется в domainservices.cs следующим образом:

public IQueryable<DBTable> GetDBTables() 
{ 
    return this.ObjectContext.DBTables; 
} 

Как я могу отображаться только две колонки (например, clm1 и CLM5) с помощью выбора лямбда-выражения ?

+0

Это для WPF? –

+0

@JeremyCook: В этом случае важно? –

+0

Возможный дубликат [Выбор многих полей из таблицы с использованием выражений Linq и Lamda] (http://stackoverflow.com/questions/3716337/selecting-many-fields-from-a-table-using-linq-and-lamda- выражения) –

ответ

15

Это вы что искали?

GetDBTables().Select(o => new { o.clm1, o.clm5 }); 

Это приведет к анонимному типу. Если вы хотите, чтобы это привело к некоторому типу, который вы определили, он может что-то вроде этого:

GetDBTables().Select(o => new MyViewModel { clm1 = o.clm1, clm5 = o.clm5 }); 
+0

Большое спасибо Джереми, Я верю, что это то, что я ищу. Я использую IQueryable, поэтому я пытаюсь вернуть значения строк Возврат GetDBTables(). Выберите (o => новый MyDto {clm1 = o.clm1, clm5 = o.clm5}); Но жалуется на недостающее доменное пространство MyDto (я знаю, что это тупой Q, но), как он определяется? – user2835586

+0

MyDto будет классом, который вы создали, который обладает только теми свойствами, которые вы хотите, например. clm1 и clm5 в этом случае. Кроме того, используйте синтаксис [анонимный тип] (http://msdn.microsoft.com/en-us/library/vstudio/bb397696.aspx) и не создавайте конкретный класс, например MyDto, если вам это действительно нужно. –

+0

Я знаю, что это старый пост, но этот ответ/расширение было фантастическим! Спасибо Джереми – Anjyr

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