К примеру есть класс, который является сущностью EntityFramework
public class User
{
public string username;
public DateTime age;
public int Weight;
}
вопщем что то вроде
есть один список
List<User> firstList;
и есть второй список
List<User> secondList;
Если мне необходимо выбрать одно значение из списка то понятно,
firstList.Where(f => f.username == "MyName");
А если мне необходимо выбрать из списка список
firstList.Where(f => secondList.Contains(f.username))
но т.к. это объект EF, то получаю ошибку
"LINQ to Entities does not recognize the method and this method cannot be translated into a store expression."
т.е. с обычными LINQ данными — списки, массивы и т.д. — это работает..
как сделать Мэни ту Мэни запрос для EF ???
Щас вот такой изврат использую:
foreach (string state in states)
{
w = string.Format("{0} it.CurrentStateName==\"{1}\" ||", w, state);
}
w = !w.IsEmpty() ? w.Remove(w.Length — 3) : "1 == 1";
Entity.InstanceState.Where(w)
но это уж страшные хаки...
Здравствуйте, maxidroms, Вы писали:
M>К примеру есть класс, который является сущностью EntityFramework
M>public class User
M>{
M> public string username;
M> public DateTime age;
M> public int Weight;
M>}
M>вопщем что то вроде
M>есть один список
M>List<User> firstList;
M>и есть второй список
M>List<User> secondList;
M>Если мне необходимо выбрать одно значение из списка то понятно,
M>firstList.Where(f => f.username == "MyName");
M>А если мне необходимо выбрать из списка список
M>firstList.Where(f => secondList.Contains(f.username))
M>но т.к. это объект EF, то получаю ошибку
M>"LINQ to Entities does not recognize the method and this method cannot be translated into a store expression."
M>т.е. с обычными LINQ данными — списки, массивы и т.д. — это работает..
M>как сделать Мэни ту Мэни запрос для EF ???
M>Щас вот такой изврат использую:
M>foreach (string state in states)
M>{
M> w = string.Format("{0} it.CurrentStateName==\"{1}\" ||", w, state);
M>}
M>w = !w.IsEmpty() ? w.Remove(w.Length — 3) : "1 == 1";
M>Entity.InstanceState.Where(w)
M>но это уж страшные хаки...
может join подойдет?
var res = from user1 in firstList
join user2 in secondList on user1.username equals user2.username
select user1;
А>может join подойдет?
А>А> var res = from user1 in firstList
А> join user2 in secondList on user1.username equals user2.username
А> select user1;
А>
Нет.
Повторюсь... дело в связке EF и обычного LINQ
Здравствуйте, maxidroms, Вы писали:
А>>может join подойдет?
А>>А>> var res = from user1 in firstList
А>> join user2 in secondList on user1.username equals user2.username
А>> select user1;
А>>
M>Нет.
M>Повторюсь... дело в связке EF и обычного LINQ
В EF Contains не работает. Похоже что MS торопились с выпуском EF и не реализовали некоторую функциональность, в частности трансляцию Contains в SQL код.
Здравствуйте, Аlexey, Вы писали:
А>Здравствуйте, maxidroms, Вы писали:
А>>>может join подойдет?
А>>>А>>> var res = from user1 in firstList
А>>> join user2 in secondList on user1.username equals user2.username
А>>> select user1;
А>>>
M>>Нет.
M>>Повторюсь... дело в связке EF и обычного LINQ
А>В EF Contains не работает. Похоже что MS торопились с выпуском EF и не реализовали некоторую функциональность, в частности трансляцию Contains в SQL код.
Таки не работает.
Как это обойти можно найти здесь
http://forums.microsoft.com/Forums/ShowPost.aspx?PostID=3994925&SiteID=1