可能重复:
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()到类型?
我有以下实体框架查询:
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)
显然上面的代码没有编译,但是我能编写的代码可以做我想要的吗?
我有一个进程,我在列表中标识行(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)
提前致谢.
如何缩短以下代码,可能使用匿名方法或扩展名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)