我需要使用某种魔法来获取pages/namespaceswebconfig中元素的名称空间吗?
<pages>
<namespaces>
<add namespace="System.Web.Mvc"/>
<add namespace="System.Web.Mvc.Ajax"/>
<add namespace="System.Web.Mvc.Html"/>
<add namespace="System.Web.Routing"/>
<add namespace="System.Web.WebPages"/>
<add namespace="System.Web.Helpers"/>
<add namespace="MyCustomHelpers"/>
</namespaces>
</pages>
Run Code Online (Sandbox Code Playgroud)
以上只是不想要的工作.我知道命名空间很好,因为当我把它@using MyCustomHelpers放在页面的顶部时它神奇地起作用.
这样我就可以在Html.SomeFunction()不必将@using所有页面放在首位的情况下开始工作
是否可以进入linq查询?我有一个linq to entity framework 4查询,它是最简单的形式:
List = List.Where(f => f.Value.ToString().ToLowerInvariant().Contains(filter.ToLowerInvariant()));
Run Code Online (Sandbox Code Playgroud)
这是对实体框架的查询DbContext,我很难理解为什么它适用于以下内容:
列表搜索001产量没有针对以下列表的结果
然而,任何其他搜索产生结果(如t00或Test)
基本上我正在寻找为什么当我使用contains时,如上所述的查询不会返回结果,并且该值匹配字符串的结尾与中间或开头的结果.这真的令人困惑.
好吧,它似乎与某些事情有关ToLowerInvariant()- 当我删除该方法时,它工作得很好.
当我实现时IList<T>,我发现我需要定义两个 GetEnumerator方法.一个返回一个类型的值IEnumerator,而另一个返回IEnumerator<T>.
我对这两种GetEnumerator方法之间的区别感到有些困惑.虽然返回类型明显不同,但它们基本上不包含相同的数据吗?
另外,为什么GetEnumerator只有返回类型才能将两个版本都作为方法存在?这似乎违背了C#中的规则,指定重载方法不能返回类型而不同.
如果默认情况下所有内容都是私有的,那么private关键字的用途是什么?
public class A {
object someObject;
private object someOtherObject;
}
Run Code Online (Sandbox Code Playgroud)
以上两种都不是私人的吗?如果它们都是私有的那么为什么需要关键字本身?
什么时候应该使用锁?仅在修改数据或访问数据时?
public class Test {
static Dictionary<string, object> someList = new Dictionary<string, object>();
static object syncLock = new object();
public static object GetValue(string name) {
if (someList.ContainsKey(name)) {
return someList[name];
} else {
lock(syncLock) {
object someValue = GetValueFromSomeWhere(name);
someList.Add(name, someValue);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
是否应该锁定整个块或者是否可以将其添加到实际修改中?我的理解是,仍然可能存在一些竞争条件,其中一个呼叫可能没有找到并开始添加它,而另一个呼叫可能也会遇到相同的情况 - 但我不确定.锁定仍然令人困惑.我没有遇到上述类似代码的任何问题,但到目前为止我可能很幸运.上面的任何帮助都会被评估,以及关于如何/何时锁定对象的任何好资源.
我一直在阅读Jon Skeet的C#In Depth:Second Edition,我注意到他的一个例子中我和我自己做的事情略有不同.
他有类似于以下内容:
var item = someObject.Where(user => user.Id == Id).Single();
Run Code Online (Sandbox Code Playgroud)
虽然我一直在做以下事情:
var item = someObject.Single(user => user.Id == Id);
Run Code Online (Sandbox Code Playgroud)
两者之间有什么真正的区别吗?我知道Jon Skeet几乎是c#god,所以我倾向于认为他在这方面的知识比我的好,所以我可能会误解这里的东西.希望有人能提供帮助.
我正在尝试使用Entity Framework CTP5从数据库中过滤结果。这是我目前的方法。
IQueryable<Form> Forms = DataContext.CreateFormContext().Forms;
foreach(string header in Headers) {
Forms = Forms.Where(f => f.GetType()
.GetProperty(header)
.GetValue(f, null)
.ToString()
.IndexOf(filter,
StringComparison.InvariantCultureIgnoreCase) >= 0);
}
Run Code Online (Sandbox Code Playgroud)
但是,我发现GetValue在使用实体框架时不起作用。如果IEnumerable<>不是,它会在类型时执行IQueryable<>
我可以使用其他方法产生相同的效果吗?