私は次のモデルを持っています:
public class User
{
public string UserId { get; set; }
public string UserName { get; set; }
public List<Membership> Membership { get; set; }
public bool IsRegistered
{
get { return !String.IsNullOrEmpty(UserName); }
}
}
public class Membership
{
public string MembershipId { get; set; }
public User User { get; set; }
}
以下のための私のリポジトリ内Membership
のエンティティ、私は以下のようにして、私のコレクションを注文しようとしていentries
ているIQueryable<Membership>
とorderBy
LamdaExpressionに等しいです{ x => x.User.IsRegistered }
。
ordered = Queryable.OrderBy(ordered, orderBy);
これを試みると、次のエラーが発生します。
指定されたタイプメンバー「IsRegistered」は、LINQ toEntitiesではサポートされていません。イニシャライザ、エンティティメンバー、およびエンティティナビゲーションプロパティのみがサポートされています。
データベースにないプロパティでコレクションを注文するにはどうすればよいですか?
前もって感謝します。
IsRegisteredはクライアント側の関数であるため、オブジェクトに対してLINQを使用して順序付けを行う必要があります。LINQ over SQLを列挙することで、LINQ overSQLをオブジェクト上のLINQに変換できます。次に、オブジェクトに対するLINQになったら、オブジェクトのOrderByに対するLINQを使用して注文できます。これを行う一般的な方法は、次のようにToListを呼び出すことです。
ordered = Queryable.ToList().OrderBy(ordered, orderBy);
データベースで順序付けを行う場合は、クライアント側のコードを次のようにSQLと互換性のあるコードに変換する必要があります。
ordered = Queryable.OrderBy(ordered, (x=>x.User.UserName!=null && x.User.UserName!=''));
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加