我想知道.NET是否提供了通过列表或字典对象进行前缀搜索的任何标准功能.我遇到了StringDictionary,但无法弄清楚它是否能为我做到这一点.
如果它可以进行前缀搜索,它是否也可以进行子串搜索或者让我使用正则表达式进行搜索?
提前致谢.
正如(其中包括)Kazi Manzur Rashid在这篇博客文章中所建议的那样,我ActionFilterAttributes在重定向时用于将模型状态从一个请求转移到另一个请求.
但是,我发现自己无法编写测试这些属性行为的单元测试.作为一个例子,这就是我想要做的测试ImportModelStateAttribute:
filterContext以便TempData[myKey]包含一些假的"导出" ModelState(也就是说,ModelStateDictionary我创建自己,并添加一个错误)ModelState包含一个模型误差.OnActionExecuting.ModelState现在包含两个错误.我已经迈出了第一步.
编辑:
是的,我曾尝试ActionFilterAttribute用Moq 嘲笑,但我得到错误说明
不可覆盖的成员上的设置无效
对于TempData和ModelState.
在jQuery验证插件有几个是做同样的事情的方法,但对于不同的区域,例如dateISO和dateDE,这两个验证日期格式.如何结合这些使输入元素接受要么?
假设<input type="text" name="dateInput" id="dateInput" />我的表单中有一个,我想允许用户只输入此字段中的日期.不过,我想,以使几个不同的日期格式-比如,用户应该能够进入任何一个ISO日期或 accoding德国日期规则格式化的日期.
如果我做
rules: { dateInput: { required: true, dateISO: true, dateDE: true } }
Run Code Online (Sandbox Code Playgroud)
表格将永远无效,因为两种日期格式都是必需的,并且永远无法满足该要求.有没有办法将这些组合为"或"而不是"和",而不必编写我自己的验证方法?
如果我必须自己编写,我该如何使它尽可能通用?
我的问题:
我有一个带有a Channel <int>和一Value <float>列的表,以及一个时间戳和另外两个带有附加数据的列。Channel是1或2,并且存在1或2行,除了channel和value以外,其他所有行都相同。
我想做的是将此数据选择为新形式,其中两个通道显示为列。我尝试使用进行操作GROUP BY,但无法弄清楚如何根据同一行的通道将值放入正确的列中。
示例:
对于那些宁愿查看我拥有的数据和想要的数据并从那里弄清楚的人,就在这里。是)我有的:
Channel Value Timestamp OtherStuff
1 0.2394 2010-07-09 13:00:00 'some other stuff'
2 1.2348 2010-07-09 13:00:00 'some other stuff'
1 24.2348 2010-07-09 12:58:00 'some other stuff'
2 16.3728 2010-07-09 12:58:00 'some other stuff'
1 12.284 2010-07-09 13:00:00 'unrelated things'
2 9.6147 2010-07-09 13:00:00 'unrelated things'
Run Code Online (Sandbox Code Playgroud)
我想要的是:
Value1 Value2 Timestamp OtherStuff
0.2394 1.2348 2010-07-09 13:00:00 'some other stuff'
24.2348 16.3728 2010-07-09 12:58:00 …Run Code Online (Sandbox Code Playgroud) 我有几个单元测试助手扩展方法,例如,IsNotEmpty(this string str)我也为其编写了单元测试.这些测试的基本结构是我有一个测试,它验证扩展方法是否通过并在"良好"输入上返回预期结果,以及验证在"坏"输入上抛出失败异常的测试.例如,上述方法的失败测试可能如下所示:
[TestMethod, Fails]
public void IsNotEmpty_Fails_On_Empty_String()
{
"".IsNotEmpty();
}
Run Code Online (Sandbox Code Playgroud)
Fails我自己写的属性在哪里- 基本上是代理[ExpectedException(typeof(AssertFailedException))].所以我明确地期望在上面测试的唯一一行上抛出一个异常,因此,我不希望该方法一直运行.
但是当我右键单击我的解决方案时,选择"使用 - > NCover测试",我在所有方法(如上面的方法)上得到的代码覆盖率低于100%,结束大括号突出显示为红色.
为什么NCover抱怨我的测试方法没有完成,当我说它不会?
**)对于那些将回复100%代码覆盖率的人来说:不,我并不特别担心不惜一切代价保持100%的代码覆盖率.但是,在这些情况下,*重要的方法显示为列表中未包含的内容,我必须一直进入树中才能看到它只是它们.这是我试图在这里得到的问题 - 一般来说不是100%的代码覆盖率.
我正在解析一个字符串以检查它是否是一个日期,我们现在发现我的方法不适用于八月或九月的日期.这就是我所做的(显然,输入并不是真正的硬编码,但为了简洁起见......):
var str = '2010-08-26 14:53';
var data = str.split(' '); // ['2010-08-26', '14:53']
var date = data[0].split('-'); // ['2010', '08', '26]
var time = data[1].split(':'); // ['14', '53']
var yyyy = parseInt(date[0]); // 2010
// THIS IS WHERE STRANGE THINGS HAPPEN:
var MM = parseInt(date[1]); // 0 - not 08 or 8, as expected!
console.log(date[1]); // prints "08" (with quotes)
console.log(date[1].toString()); // prints 08 (no quotes)
console.log(parseInt(date[1].toString())); // prints 0 (!)
Run Code Online (Sandbox Code Playgroud)
这个问题出现了8,9月份和8楼和9月的每-也就是说,在任"08"或 …
我注意到,我可以同时使用单引号和双引号来分隔字符串蟒蛇,和哪一个我不使用分隔字符串,我可以自由地在其内部使用而无需逃避它.
例子:
ex1 = 'this works'
ex2 = "this works too"
ex3 = "it's much easier to write it's this way"
ex4 = 'but this way, it\'s possible to print out "quotes from other people"'
Run Code Online (Sandbox Code Playgroud)
在其他语言,但我见过情况下,两个地方都无所谓(在JavaScript中,双方'hi'=="hi"并'hi'==="hi"返回true),而在其(在C#中,"d"是一个string同时'd'是char)
现在,我想知道"引擎盖下"是否真的存在差异.python是否关心'和"我使用哪个?如果真是这样,那么是以哪种方式?
我有一个SQL脚本(目前针对SQLite运行,但它可能适用于任何数据库引擎),它使用相同的子查询两次,因为它可能会获取大量记录(该表有几百万行)I'我只想打电话一次.
缩短的伪查询版本如下所示:
SELECT * FROM
([the subquery, returns a column of ids]) AS sq
[a couple of joins, that fetches things from other tables based on the ids]
WHERE thisorthat NOT IN ([the subquery again])
Run Code Online (Sandbox Code Playgroud)
我尝试sq以各种方式使用name()(有/无括号,有/无命名sq等列),但无济于事.
难道我真的有重复这个子查询?
澄清: 我在python和sqlite中这样做是一个可以完成的小演示,但我希望我的解决方案尽可能少地进行修改.在实际情况中,数据库将有几百万行,但在我的示例中,只有10行具有虚拟数据.因此,在例如MySQL上进行了优化的代码绝对足够好 - 它不必专门针对SQLite进行优化.但正如我所说,需要的修改越少越好.
tl; dr:
在遗留应用程序中,文化信息存储在HttpContext.Current.Session["culture"].我如何在这里介绍DI与温莎,所以当运行应用程序仍然获取并设置文化信息,但我可以在我的测试中模拟它?
完整背景:
我有一些遗留代码用于本地化,我希望重构以实现模拟和测试.目前,自定义类Lang基于提供string key和打开来获取本地化字符串HttpContext.Current.Session["culture"] as CultureInfo.
我最初的想法是简单地CultureInfo使用Windsor 注入一个实例,然后安装它以便在运行整个Web应用程序时从同一个地方获取它,但是在测试时我只需注册一个new CultureInfo("en-GB").这是我为安装程序提出的:
public class CultureInfoFromSessionInstaller : IWindsorInstaller
{
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.Register( // exception here (see comments below)
Component.For<CultureInfo>()
.Instance(HttpContext.Current.Session["culture"] as CultureInfo)
.LifeStyle.PerWebSession());
}
}
class EnglishCultureInfoInstaller : IWindsorInstaller
{
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.Register(
Component.For<CultureInfo>()
.Instance(new CultureInfo("en-GB")));
}
}
Run Code Online (Sandbox Code Playgroud)
但是现在运行应用程序时,我在指定的行上得到一个空引用异常.我怀疑这是因为我试图过早地挂起它 - 容器已初始化并且安装程序Application_Start在Global.asax.cs中注册,我不确定HttpContext.Current.Session(或者甚至HttpContext.Current)是否已设置.
有没有一个很好的方法来获得我在这里想要做的事情?
我最近将我的LaTeX创作从TeXWorks迁移到Sublime Text 2,我真正缺少的一个功能是能够输入"常规引号",(在我的瑞典语键盘上使用shift+ 2,屈服"quoted text")并自动编辑将它们转换为在LaTeX中引用的正确方式,这是``quoted text''在我输入的时候.
我试图在ST2中寻找一种方法来做到这一点,但我发现的大部分内容都与自动转义字符串中的引号有关,这不是我所追求的.
有没有办法在ST2中获得此功能?
c# ×3
sql ×2
string ×2
asp.net-mvc ×1
dry ×1
group-by ×1
in-clause ×1
javascript ×1
jquery ×1
latex ×1
modelstate ×1
ncover ×1
parseint ×1
prefix ×1
python ×1
search ×1
session ×1
sublimetext2 ×1
subquery ×1
t-sql ×1
unit-testing ×1