我正在阅读MSDN杂志上关于在LINQ中使用Enumerable类生成随机数组的文章.本文使用VB.NET,我不能立即确定C#中的等价物是什么:
Dim rnd As New System.Random()
Dim numbers = Enumerable.Range(1, 100). _
OrderBy(Function() rnd.Next)
Run Code Online (Sandbox Code Playgroud) 基于我放置过滤条件的位置,查询中的过滤条件会得到不同的结果.我的问题是:
鉴于简化的方案:
--Table: Parent Columns: ID, Name, Description
--Table: Child Columns: ID, ParentID, Name, Description
--Query 1
SELECT p.ID, p.Name, p.Description, c.ID, c.Name, c.Description
FROM Parent p
LEFT OUTER JOIN Child c ON (p.ID = c.ParentID)
WHERE c.ID IS NULL OR c.Description = 'FilterCondition'
--Query 2
SELECT p.ID, p.Name, p.Description, c.ID, c.Name, c.Description
FROM Parent p
LEFT OUTER JOIN Child c
ON (p.ID = c.ParentID AND c.Description = 'FilterCondition')
Run Code Online (Sandbox Code Playgroud)
我假设查询将返回相同的结果集,当他们没有时,我感到很惊讶.我正在使用MS SQL2005并且在实际查询中,查询1返回~700行,查询2返回~1100行,我无法检测返回行和排除哪些行的模式.查询1中仍有许多行,子行包含数据和NULL数据.我更喜欢查询2的样式(我认为它更优),但我认为查询会返回相同的结果.
编辑/概述:
这里提供了一些很棒的答案.我很难选择给谁答案.我决定选择mdma,因为它是第一个答案,也是最清晰的答案之一.根据提供的答案,这是我的总结:
可能的结果:
我有一个基本的ViewModel和相关的View.我还从基础ViewModel中获得了多个派生的ViewModel,但我想使用基本View进行显示.
基本ViewModel和View:
MyCompany.MyApp.Modules.Wizard.ViewModels.WizardViewModelMyCompany.MyApp.Modules.Wizard.Views.WizardView来源于WizardViewModel:
MyCompany.MyApp.Modules.NewSpec.ViewModels.NewSpecViewModel : WizardViewModelvw :(映射到MyCompany.MyApp.Modules.Wizard.Views.WizardView)
VM: MyCompany.MyApp.Modules.NewSpec.ViewModels.NewMaterialViewModel : WizardViewModel
MyCompany.MyApp.Modules.Wizard.Views.WizardView)我认为这应该可以使用ViewLocator或ViewModelLocator或NameTransformer中的映射,但我还没有想到它.
我正在使用Gemini Framework和Caliburn.Micro v1.5.2(我打算很快升级到v2).
这是我尝试过的一件事:
public class NewSpecViewModel : WizardViewModel
{
// ...
static NewSpecViewModel()
{
// Escape the '.' for the regular expression
string nsSource = typeof(NewSpecViewModel).FullName.Replace(".", @"\.");
string nsTarget = typeof(WizardViewModel).FullName;
nsTarget = nsTarget.Replace("WizardViewModel", "Wizard");
// nsSource = "MyCompany\\.MyApp\\.Modules\\.NewSpec\\.ViewModels\\.NewSpecViewModel"
// nsTarget = "MyCompany.MyApp.Modules.Wizard.ViewModels.Wizard"
ViewLocator.AddTypeMapping(nsSource, null, nsTarget); …Run Code Online (Sandbox Code Playgroud)