0
  1. Queryというクラスがあります。
  2. そして、Permissionsというクラスがあります
  3. クエリにはアクセス許可のコレクションがあります
  4. ユーザーがアクセス許可を持つクエリをクエリする必要があります。

しかし、where句の作り方がわかりません。

public class Query
{
    public int QueryId { get; set; }
    public string QueryName { get; set; }
    public string QuerySql { get; set; }
    public string CreatedBy { get; set; }
    public string QueryType { get; set; }
    public string Column1 { get; set; }
    public string Operator1 { get; set; }
    public string Value1 { get; set; }
    public string Connector2 { get; set; }
    public string Column2 { get; set; }
    public string Operator2 { get; set; }
    public string Value2 { get; set; }
    public string Connector3 { get; set; }
    public string Column3 { get; set; }
    public string Operator3 { get; set; }
    public string Value3 { get; set; }
    public virtual ICollection<Permission>  Permissions { get; set; }
}

public class Permission
{
    public int PermissionId { get; set; }
    public string UserName { get; set; }
}

public IQueryable<Query> GetQueriesForUser(string userName)
{
    _context.Queries.Where(m=>m.Permissions.Contains(???))
}
4

1 に答える 1

3

したがって、アクセス許可のユーザー名がユーザーのユーザー名である
そのクエリのアクセス許可があるすべてのクエリが必要です

次のようなものを使用できます。

_context.Queries.Where(q => q.Permissions.Any(p => p.UserName.Equals(userName)));
于 2012-05-31T09:17:03.030 に答える