Как решить эту ошибку «Невозможно преобразовать лямбда-выражение в тип« строка », поскольку он не является делегатом» - PullRequest
3 голосов
/ 13 июня 2010

. Я получаю эту ошибку: «Невозможно преобразовать лямбда-выражение в тип« строка », потому что это не тип делегата» - выбор ключевого слова становится подчеркнутым синим цветом.

   Employee emp = new Employee();
   comHandledBySQt.DataSource = from x in emp.GetDataFromTable("1")
                    select new { x.Id, Name = x.FirstName + " " + x.LastName };
   comHandledBySQt.DisplayMember = "Name";
   comHandledBySQt.ValueMember = "Id";

Над кодом должен отображаться выпадающий список имени и фамилии сотрудников в поле со списком

Ответы [ 2 ]

2 голосов
/ 13 июня 2010

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

var queryA = (from x in dataSet.EmployeeTable
                        select new { x.Id, Name = x.FirstName + " " + x.LastName }).ToList();

Из данной ошибки не видно, что у вас есть набор данных строгого типа, и вполне может быть, что возвращаемое значение не является DataSet, а скорее просто DataTable (по крайней мере, из моих попыток воссоздать ваш сообщение об ошибке, я получаю его на DataTable, а не набор). Но без строго типизированного DataSet / DataTable этот запрос вы бы выполняли.

var queryB = (from DataRow x in someSet.Tables[0].Rows
            select new { Id = (string)x["Id"], Name = (string)x["FirstName"] + " " + (string)x["LastName"] }).ToList();

Обратите внимание, что в обоих случаях вы бы включили вызов .ToList (), так как без него вы получите еще одну ошибку, говорящую о том, что для сложного связывания данных требуется IList или IListSource, который запрашивается (без ToList ( ) вызов) это ни то, ни другое.

2 голосов
/ 13 июня 2010

x.Id может потребоваться сделать присвоение, например.
select new { Id = x.Id, Name = string.Format("{0} {1}", x.FirstName, x.LastName) };

DataSet не перечисляемо, поэтому, если GetDataFromTable("1") возвращает DataSet, вам необходимо перечислить болеесоответствующий набор результатов / таблица, например.GetDataFromTable("1").Tables[0] если у вас есть только один набор результатов.

Каждый элемент в перечислении будет DataRow, который имеет индексный (а не свойство) метод доступа: DataRow[columnIndex] или DataRow[columnName].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...