LINQ to Entities не распознает метод Int32 get_Item (Int32)

Я новичок в инфраструктуре сущности и linq. Мой запрос похож на этот

var query = (from d in db.MYTABLE
             where d.RELID.Equals(myInts[0])
             select d.ID).Distinct();

List<int?> urunidleri = query.ToList();

Когда я выполняю этот код, я получил сообщение об ошибке "LINQ to Entities не распознает метод Int32 get_Item (Int32)". Как я могу решить свою проблему?

Спасибо...

Ответ 1

Вам нужно сохранить int в переменной, чтобы EntityFramework не пыталась вытащить весь массив в область видимости.

var myInt = myInts[0];

var query = (from d in db.MYTABLE
             where d.RELID.Equals(myInt)
             select d.ID).Distinct();

List<int?> urunidleri = query.ToList();

Ответ 2

var firstInt = myInts[0];
var query = (from d in db.MYTABLE
             where d.RELID.Equals(firstInt)
             select d.ID).Distinct();

List<int?> urunidleri = query.ToList();

Ответ 3

Запрос Linq в конечном итоге преобразуется в SQL-запрос, и LINQ не знает, что делать с Session["UserName"] (который получает элемент "UserName" ).

Общим способом обхода этого является просто использование локальной переменной, которой вы назначили Session["UserName"], и которую вы будете использовать в своем запросе Linq...

как

string loggedUserName = Session["LogedUsername"].ToString();
var userdetail = dc.faculties.Where(a => a.F_UserName.Equals(loggedUserName)).FirstOrDefault();

ссылка http://mvc4asp.blogspot.in/