小编Gia*_*tti的帖子

使用 asp.net 样板和 Automapper 进行自定义映射

我是 ASP.NET BoilerPlate (ABP) 的新手,我试图了解如何使用 AutoMapper 创建自定义映射,也许还有 ABP 自动映射器属性:AutoMap、AutoMapFrom、AutoMapTo。

使用 ABP,我可以通过这种方式映射两个类:

[AutoMapTo(typeof(DestClass)]
public class SourceClass {
    public string A { get; set; }
    public string B { get; set; }
}

public class DestClass {
    public string A { get; set; }
    public string B { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我有如下两个类,我希望属性 AB 自动映射为 A 和 B 的联接:

[AutoMapTo(typeof(DestClass)]
public class SourceClass {
    public string A { get; set; }
    public string B { get; set; }
}

public class DestClass …
Run Code Online (Sandbox Code Playgroud)

c# asp.net automapper aspnetboilerplate

5
推荐指数
1
解决办法
7510
查看次数

Linq解析器问题?

好吧,我不确定我是错了还是linq解析了错误,但是如果我不使用额外的括号,则以下linq查询返回我不想要的内容.

int? userLevel;
Guid? supervisorId;
List<int> levelsIds = new List<int>();
string hierarchyPath;

// init the vars above
// ...

var qry = from f in items
          where userLevel.HasValue
                   ? (f.IsMinLevelIdNull() || (levelsIds.Contains(f.MinLevelId)))
                   : true
                && supervisorId.HasValue
                   ? (f.IsSupervisorIdNull() || (!f.ChildrenVisibility && (f.SupervisorId == supervisorId.Value))
                        || (f.ChildrenVisibility && (hierarchyPath.IndexOf(f.SupervisorId.ToString()) >= 0)))
                   : true
          select f;
Run Code Online (Sandbox Code Playgroud)

这里的想法是通过变量'userLevel'和'supervisorId'的存在在两个条件块"激活"之间运行查询.

例如,如果userLevel和supervisoId都为null,则查询变为:

var qry = from f in items
          where true && true
          select f;
Run Code Online (Sandbox Code Playgroud)

好吧,只有当我在附加括号中包含2个三字母时,此查询才有效:

var qry = from f in items
          where (userLevel.HasValue
                       ? …
Run Code Online (Sandbox Code Playgroud)

c# linq

2
推荐指数
1
解决办法
84
查看次数

标签 统计

c# ×2

asp.net ×1

aspnetboilerplate ×1

automapper ×1

linq ×1