小编MyN*_*Job的帖子

如何向Razor页面添加额外的命名空间而不是@using声明?

我需要使用某种魔法来获取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所有页面放在首位的情况下开始工作

razor asp.net-mvc-3

146
推荐指数
3
解决办法
5万
查看次数

使用.Contains()和.ToLowerInvariant()的EF查询在字符串末尾找到匹配时没有匹配

是否可以进入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产量没有针对以下列表的结果

  1. Test001
  2. Test002
  3. Test003
  4. Test004

然而,任何其他搜索产生结果(如t00Test)

更新

基本上我正在寻找为什么当我使用contains时,如上所述的查询不会返回结果,并且该值匹配字符串的结尾与中间或开头的结果.这真的令人困惑.

好吧,它似乎与某些事情有关ToLowerInvariant()- 当我删除该方法时,它工作得很好.

c# linq entity-framework-4

14
推荐指数
1
解决办法
5070
查看次数

为什么实现'IList <T>'需要定义两个'GetEnumerator'方法?

当我实现时IList<T>,我发现我需要定义两个 GetEnumerator方法.一个返回一个类型的值IEnumerator,而另一个返回IEnumerator<T>.

我对这两种GetEnumerator方法之间的区别感到有些困惑.虽然返回类型明显不同,但它们基本上不包含相同的数据吗?

另外,为什么GetEnumerator只有返回类型才能将两个版本都作为方法存在?这似乎违背了C#中的规则,指定重载方法不能返回类型而不同.

.net c# interface list

8
推荐指数
2
解决办法
1585
查看次数

私有关键字vs没有私人关键字

如果默认情况下所有内容都是私有的,那么private关键字的用途是什么?

public class A {
    object someObject;
    private object someOtherObject;
}
Run Code Online (Sandbox Code Playgroud)

以上两种都不是私人的吗?如果它们都是私有的那么为什么需要关键字本身?

.net c#

8
推荐指数
2
解决办法
1052
查看次数

仅在修改vs整个方法时锁定

什么时候应该使用锁?仅在修改数据或访问数据时?

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)

是否应该锁定整个块或者是否可以将其添加到实际修改中?我的理解是,仍然可能存在一些竞争条件,其中一个呼叫可能没有找到并开始添加它,而另一个呼叫可能也会遇到相同的情况 - 但我不确定.锁定仍然令人困惑.我没有遇到上述类似代码的任何问题,但到目前为止我可能很幸运.上面的任何帮助都会被评估,以及关于如何/何时锁定对象的任何好资源.

c# multithreading

6
推荐指数
1
解决办法
582
查看次数

Linq带点符号 - 这是更好的形式还是这两者之间有什么区别?

我一直在阅读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,所以我倾向于认为他在这方面的知识比我的好,所以我可能会误解这里的东西.希望有人能提供帮助.

c# linq

5
推荐指数
1
解决办法
346
查看次数

使用GetValue的IQueryable &lt;&gt;动态排序/过滤失败

我正在尝试使用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<>

我可以使用其他方法产生相同的效果吗?

c# entity-framework

3
推荐指数
1
解决办法
2030
查看次数