我需要在switch语句之外声明查询变量,因为我只有一个变量可以处理不同的LINQ查询结果.请参阅下面的代码.这里的问题是我不能在没有初始化的情况下推断变量
var query;
Switch(filter)
{
case 1:
var query = from c in Customers
where c.Type equals == 'ABC'
select c;
break;
case 2:
var query = from c in Customers
where c.Type equals == 'CDE'
select c;
break;
}
foreach(var custrow in query)
{
//Do Logic
}
}
Run Code Online (Sandbox Code Playgroud) 我已经设法找到正则表达式,以获得我想要的结果,即
Regex r1 = new Regex(@"\[(.*?)\]");
string row = HEADERNAMES[COL1,COL2,COL3,COL4];
Match match = r1.Match(row);
string result = match.ToString();
Run Code Online (Sandbox Code Playgroud)
输出:"[COL1,COL2,COL3,COL4]";
我知道我可以使用:
result.Replace("[", "");
result.Replace("]", "");
Run Code Online (Sandbox Code Playgroud)
得到我想要的,但我想知道是否有一种方法可以在不执行String方法的情况下从Regex结果中省略delimeters [和].
我原本以为使用Regex本身有一个更优雅的解决方案?
提前致谢.
是否有任何替代方法System.Windows.Forms.Application.DoEvents()来刷新不使用System.Windows.Forms命名空间的事件队列?如果没有,可以在Web服务中使用上述方法/命名空间.
我只是想知道这是否会涉及多层间接?
替代文字http://img244.imageshack.us/img244/7371/classdiagram1.jpg
我尝试做一些解释.我的想法是,我在COM对象的顶部构建一个API,它只暴露Do和Eval方法.
以前我刚刚将一个IComObject传递给Table类并直接对其进行操作,但这意味着当我尝试测试Table类时,我已经模拟了IComObject并担心命令被发送到我的表类中的COM对象.
基本思想是我有命令运行器负责在COM对象中调用正确的命令,而Table(和其他)对象只是与命令运行器对话,而不必担心正在执行的命令.然后在我的测试中我可以这样做:
Mock<TableCommandRunner> mockrunner = new Mock<TableCommandRunner>();
mockrunner.Setup(run => run.getName("DummyTable")).Returns("FakeName");
Table table = new Table("DummyTable");
//Table.Name just calls commandrunner.getName
Assert.Equal(table.Name,"FakeName");
Run Code Online (Sandbox Code Playgroud)
是否有太多的间接层或者这样可以吗?
注意:我会有更多的类,然后只有Table,Map,Window,Object等等都可以与命令运行者交谈.
我一直在为我的数据库中的几个表创建一个单独的审计表.我在这个页面上找到了代码:http://www.simple-talk.com/sql/database-administration/pop-rivetts-sql-server-faq-no.5-pop-on-the-audit-trail/
我喜欢这个想法,但我唯一感到困惑的是如何查询信息以便以有用的方式显示.
进行一些更改后,审计表如下所示:
大多数时候,为了创建历史记录,我只需复制一个表并在末尾添加一个日期修改列,然后将整行复制到历史表中,但这会创建大量复制数据和大量历史表如果你有很多东西需要审核.
虽然在大多数情况下你可以生成相同的MSIL,但工具肯定存在差异. 例如,PEX使用C#更容易.
哪种Microsoft或第三方工具对两种语言都不起作用?