Member 14169626 Ответов: 2

Невозможно применить индексацию с помощью [] к выражению типа 'anonymous type#1'


Я хочу выбрать пункт select combobax.И показать элемент treeview.В TreeView элемент имеет флажок и текстовое поле.Ссылается на пространство имен текстовое поле.
Если студентов много, то флажок должен появиться в соответствии с выбранным нами значением combobax.Согласно следующему методу, я жду, когда запрос придет к флажку.
Например: is combobax item and database is имеет три номера.Я хочу, чтобы 3 три флажка и имя,идентификатор.

флажок рисунок 1 Джон
флажок рисунок 2 Мэри
флажок рис. 3 Мартин

Что я уже пробовал:

public void Student(){
var query= (from p in tableA join b in tableB on p.ID equals b.ID select new { ID=p.ID,Name=p.Name}).ToList();
foreach(var a in query)
{
Student stud=new Student();
stud.IDS=a[ID].ToString();
stud.Names=a[Names].ToString().Trim();
studList.Add(stud);
}


a[ID] и a[Names] - это ошибка.
Эта ошибка такова:
Невозможно применить индексацию с помощью [] к выражению типа 'анонимный Тип#1'


}

2 Ответов

Рейтинг:
1

Richard Deeming

В отличие от Javascript, в C# вы не можете использовать индексатор для доступа к свойствам объекта. Вам нужно использовать свойства напрямую:

stud.IDS = a.ID.ToString();
stud.Names = a.Name.ToString().Trim();
NB: Я подозреваю, что Name собственность уже есть string- так что тебе не нужно звонить Name.ToString().


Рейтинг:
0

F-ES Sitecore

Вы используете анонимные типы, и есть ограничения относительно того, что вы можете с ними сделать, поэтому решение состоит в том, чтобы не использовать их.

Создайте конкретный класс с соответствующими свойствами ID и Name

class MyData
{
    public int ID { get; set; }
    public string Name { get; set; }
}


обновите свой запрос, чтобы использовать его

var query= (from p in tableA join b in tableB on p.ID equals b.ID select new MyData { ID=p.ID,Name=p.Name}).ToList();