2013-07-18 2 views
0

У меня есть 2 таблицы, и используйте этот запрос для выбора некоторой записи.Каков тип возврата моего linq?

var temp = db.Letters 
      .Where(l => !db.SendLetters.Any(s => s.LetterId == l.Id)) 
      .Select(l => new { CreatedDate = l.CreatedDate, priority = l.priority, Subject = l.Subject); 
    DashboardListView = CollectionViewSource.GetDefaultView(temp.ToList()); 

У меня есть ListView и связать его с DashboardListView

<ListView ItemsSource="{Binding DashboardListView}" SelectedItem="{Binding SelectedItem}" sort:GridViewSort.AutoSort="True" IsSynchronizedWithCurrentItem="True" > 
        <ListView.View> 
         <GridView> 
          <GridView.Columns > 
           <GridViewColumn DisplayMemberBinding="{Binding Subject}" Width="170" sort:GridViewSort.PropertyName="Subject" /> 
           <GridViewColumn DisplayMemberBinding="{Binding CreatedDate}" Width="110" sort:GridViewSort.PropertyName="CreatedDate" /> 
           <GridViewColumn DisplayMemberBinding="{Binding priority}" Width="80" sort:GridViewSort.PropertyName="priority" /> 
          </GridView.Columns> 
         </GridView> 
        </ListView.View> 
       </ListView> 

и связать SelectedItem с SelectedItem собственности. При выборе строки, я хочу получить товар SelectedItem. (Тема, CreatedDate, ..)

SelectedItem as //type 

Какой тип возврата моего LINQ?

+0

Наведите указатель мыши на ключевое слово 'var', и это должно вам сказать. Или сделайте 'GetType()'. –

+0

Почему бы вам не отлаживать и не видеть сами? – Vanlalhriata

+2

'IQueryable <{анонимный тип}>' выглядит вероятным, если вы исправите отсутствующую конечную скобку '}'. –

ответ

1

Ваше заявление LINQ возвращает IEnumerable анонимного типа, созданного в

.Select(l => new { ... }); 

Из раздела Замечания в Anonymous Types:

типы Анонимные типы класса, которые вытекают непосредственно из объекта, и что не может быть применена к любому типу, кроме объекта. Компилятор предоставляет имя для каждого анонимного типа, хотя ваше приложение не может получить доступ к . С точки зрения времени выполнения общего языка анонимный тип ничем не отличается от любого другого ссылочного типа.

Следовательно, чтобы использовать этот тип в другом месте, вам придется заменить его на обычный класс C#.

+0

Большое спасибо, если я его заменю на регулярный C# класс() '.Выберите (l => новый MyClass() {..}' .. когда я привяжу его к списку, не показываю элементы. '

+0

'MyClass' должен обладать теми же свойствами, что и анонимный класс, и все они должны быть' public'. – Clemens

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