相关疑难解决方法(0)

使用Case/Switch和GetType来确定对象

可能重复:
C# - "开启类型"有比这更好的选择吗?

如果你想要switch一种类型的对象,最好的方法是什么?

代码段

private int GetNodeType(NodeDTO node)
{
    switch (node.GetType())
    { 
        case typeof(CasusNodeDTO):
            return 1;
        case typeof(BucketNodeDTO):
            return 3;
        case typeof(BranchNodeDTO):
            return 0;
        case typeof(LeafNodeDTO):
            return 2;
        default:
            return -1;
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道这不起作用,但我想知道如何解决这个问题.if/else在这种情况下是否适用声明?

或者你使用开关并添加.ToString()到类型?

.net c# reflection case switch-statement

143
推荐指数
9
解决办法
20万
查看次数

LINQ to Objects连接两个集合以在第一个集合中设置值

我有以下实体框架查询:

var results = from r in db.Results
              select r;
Run Code Online (Sandbox Code Playgroud)

我正在使用AutoMapper映射到另一种类型:

var mapped = Mapper.Map<IEnumerable<Database.Result>, IEnumerable<Objects.Result>>(results);
Run Code Online (Sandbox Code Playgroud)

在我的Objects.Result类型中,我有一个名为reason的属性,它不是来自数据库.它来自另一个来源,我需要基本填充回我的映射类型:

var reasons = new List<Reason>
{
    new Reason { Id = 1, Reason = "asdf..." }
};
Run Code Online (Sandbox Code Playgroud)

我需要使用我的映射集合加入原因,并使用my reason集合中的值在我的映射集合中设置Reason属性.这可能吗?

 // need something like this:
 mapped = from m in mapped
          join r in reasons on m.Id equals r.Id
          update m.Reason = r.Reason
          select m;
Run Code Online (Sandbox Code Playgroud)

显然上面的代码没有编译,但是我能编写的代码可以做我想要的吗?

.net c# linq-to-objects

21
推荐指数
2
解决办法
3万
查看次数

这可以完全通过linq完成吗?

我有一个进程,我在列表中标识行(unmatchedClient)然后调用一个单独的方法来删除它们(pingtree.RemoveNodes).这似乎有点长,我只能通过将属性"DeleteFlag"的值设置为true来实现同样的目的.但是如何使用linq设置值?

var unmatchedClient = pingtree.Nodes.Where(x =>
    _application.LoanAmount < x.Lender.MinLoanAmount ||
    _application.LoanAmount > x.Lender.MaxLoanAmount ||
    _application.LoanTerm < x.Lender.MinLoanTerm ||
    _application.LoanTerm > x.Lender.MaxLoanTerm)
.Select(x => x.TreeNode)
.ToList();

pingtree.RemoveNodes(unmatchedClient);
Run Code Online (Sandbox Code Playgroud)

提前致谢.

c# linq

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

使用linq更改列表的属性

如何缩短以下代码,可能使用匿名方法或扩展名LINQ.

因为我必须多次重复这段代码,所以我希望尽可能简洁.

var imagesToUnlock = App.ImageListVM.Items.Where(img => img.Category == key);

foreach (var image in imagesToUnlock)
{
    image.IsLocked = false;
}
Run Code Online (Sandbox Code Playgroud)

c# linq windows-phone-8

0
推荐指数
1
解决办法
114
查看次数