У меня есть немного загадки относительно запроса LINQ к DataGridViewRowCollection.Вот мой запрос (где "grid" - это объект DataGridView):
var rows = from DataGridViewRow row in grid.Rows
where row.Selected
select row;
У меня есть проект, который содержит этот запрос, и он отлично выполняется.Проблема в том, что в другом проекте я получаю следующую ошибку при попытке построить решение:
error CS1936: Could not find an implementation of the query pattern for source type 'System.Windows.Forms.DataGridViewRow'. 'Where' not found.
Сначала я подумал, что это была ссылка, но я использую те же ссылки воба проекта:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Data;
using System.Data.EntityModel;
using System.Drawing;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows.Forms;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Security.Cryptography;
using System.Diagnostics;
Кто-нибудь знает, почему мой запрос LINQ будет работать в одном проекте, а не в другом?
Редактировать 1:
Для записи, вот точный контекст, в котором запрос работает :
public List<Int64> ComponentIDs
{
get
{
return
(
from DataGridViewRow row in grid.Rows
where row.Selected
select (Int64)row.Cells[0].Value
).ToList();
}
}
Редактировать 2:
Iтолько что наткнулся на следующую ссылку ... посмотрите принятый ответ ... это то, что я пытаюсь сделать.Почему-то я не могу заставить работать метод расширения IEnumerable.Cast () ... что мне не хватает?