2012-02-01 5 views
0

이전 question에 추가하면 쿼리를 단순화 할 수 있었지만 여전히 MySQL 공급자에 문제가 있습니다.LINQ 표현식을 표현하는 대체 방법을 찾으려고 시도했습니다.

사용자가 목록에 있는지 기록하는 회원 테이블이 있습니다. 사용자의 구성원에 대한 업데이트가 발생하면 새 레코드가 기록되고 이전 레코드는 그대로 유지되어 멤버십 내역을 유지 관리 할 수 ​​있습니다. 사용자의 회원 자격을 얻으려면 가장 최근의 항목을 선택해야합니다.

일부 사용자 목록 회원 데이터의 예는 다음과 같습니다. 목표는 목록과 사용자별로 그룹화하지만 가장 최근에 삽입 된 레코드가있는 행만 반환하는 LINQ 식을 찾는 것입니다.

List Name, Username, Comment, ExpiresOn, Inserted 
Test List, joeb, second update, 2012-03-13 16:55:03, 2012-01-31 22:28:40 
Test List, joeb, first update, 2012-02-13 16:55:01, 2012-01-31 22:28:39 
Test List, joeb, initial, 2012-01-13 16:55:02, 2012-01-31 22:28:38 

내 LINQ 표현식은 다음과 같습니다. " 'where 절'알 수없는 열 'Extent1.UserID'MySql.Data.MySqlClient.MySqlException"

var query = from mem in db.UserListMemberships 
      where 
      mem.Inserted >= (from mem2 in db.UserListMemberships where mem.UserID == mem2.UserID && mem.UserListID == mem2.UserListID orderby mem2.Inserted descending select mem2.Inserted).FirstOrDefault() 
      select mem; 

문제는 내가의 MySQL의 엔티티 공급자로부터 예외를 얻고있다. MySQL 예외를 둘러싼 e 표현식을 작성할 수있는 다른 방법이 있습니까? 당신을 위해 작동하는 경우

답변

1

이 시도하고 참조 :

var query = 
    from mem in db.UserListMemberships 
    group mem by mem.UserID into mems 
    select mems.OrderByDescending(m => m.Inserted).First(); 
+0

을 즉 Linq에 - 투 - EF 인프라 "System.NotSupportedException 내에서 예외가 생성처럼 먼저 사용 : '먼저'방법을 전용으로 사용할 수 있습니다 이 쿼리에서는 'FirstOrDefault'메서드를 사용하는 것이 좋습니다. " – sipwiz

+0

@sipwiz - 팁 주셔서 감사합니다. 건배. – Enigmativity

관련 문제