4

LINQ オブジェクトを LINQ データ プロバイダーに保持し、IQueryable を返してフィルタリングなどを可能にするために、他の人に似たアプローチを使用しています。他の子オブジェクトで構成される結合テーブル オブジェクト

    //CoreDBDataContext db = coreDB;
public IQueryable<DTO.Position> GetPositions()    {
     return from p in coreDB.Positions
         select new DTO.Position
             {
             DTO.User = new DTO.User(p.User.id,p.User.username, p.User.firstName,p.User.lastName,p.User.email,p.User.isActive),
             DTO.Role = new DTO.Role(p.Role.id, p.Role.name, p.Role.isActive),
             DTO.OrgUnit = new DTO.OrgUnit(p.OrgUnit.id,p.OrgUnit.name,p.OrgUnit.isActive)
             };

coreDB.Positions は私の Linq ポジション オブジェクトであり、ユーザー、OrgUnit、およびロールで構成される DTO ポジションを返しています (基になるテーブルは、UserID、RoleID、および OrgUnitID を持つ結合テーブルです)。

私が抱えている問題は、Iqueryable にフィルターを追加しようとすると、DTO.User オブジェクトに使用できる変換がないという SQL エラーが発生することです。

public static IQueryable<Position> WithUserID(this IQueryable<Position> query, int userID)
    {
        return query.Where(p => p.User.ID == userID);
    }

私のGoogleの結果はすべて、生成されたLINQオブジェクトを直接操作している人々のものであるように見えるため、これを解決する方法について完全に途方に暮れています

これを機能させる方法について何か考えがありますか、それともここで何か完全に間違っていますか?

ありがとう

4

3 に答える 3