小编Jam*_*ran的帖子

在SQL中获取null == null

我希望在可空列上搜索数据库表.有时我搜索的值本身就是NULL.因为Null等于什么,甚至是NULL,说

where MYCOLUMN=SEARCHVALUE 
Run Code Online (Sandbox Code Playgroud)

将失败.现在我不得不诉诸

where ((MYCOLUMN=SEARCHVALUE) OR (MYCOLUMN is NULL and SEARCHVALUE is NULL))
Run Code Online (Sandbox Code Playgroud)

有更简单的说法吗?

(如果重要,我正在使用Oracle)

sql oracle null nullable

44
推荐指数
6
解决办法
2万
查看次数

当一个界面"继承"另一个界面时,你怎么称呼它?

如果我有B级:A {}

我说"B级继承了 A级"或"B级来自A级".

但是,如果我改为:

  class B : ISomeInterface   {}
Run Code Online (Sandbox Code Playgroud)

说"B继承ISomeInterface"是错误的 - 正确的术语是"B 实现 ISomeInterface".

但是,说我有

  interface ISomeInterface : ISomeOtherInterface   {}
Run Code Online (Sandbox Code Playgroud)

现在,说"继承"仍然是错误的,但现在说"实现"是错误的,因为ISomeInterface没有实现任何东西.

那么,你怎么称呼这种关系?

c# oop interface

43
推荐指数
4
解决办法
2万
查看次数

如何修复过时的ILoggerFactory方法?

我将我的项目升级到.NET Core 2.2.x并得到了关于以下代码的过时警告 - 两行:

public void Configure(IApplicationBuilder app, 
                      IHostingEnvironment env, 
                      ILoggerFactory loggerFactory) 
  {
    loggerFactory.AddConsole(Configuration.GetSection("Logging"));
Run Code Online (Sandbox Code Playgroud)

修复的建议是The recommended alternative is AddConsole(this ILoggingBuilder builder).我以为这就是我正在使用的东西.

我在这里错过了什么?

.net c# .net-core asp.net-core asp.net-core-2.2

34
推荐指数
4
解决办法
1万
查看次数

FOREACH返回的对象的顺序是否稳定?

假设同一个集合上的两个itterations将以相同的顺序返回对象是否安全?显然,假设该集合没有另外改变.

.net c# collections ienumerable foreach

19
推荐指数
4
解决办法
7917
查看次数

解析XML布尔属性(在.NET中)的最佳方法是什么?

声明为xs:boolean的XML属性可以接受为"true","false","0"或"1".但是,在.NET中,Boolean.Parse()只接受"true"或"false".如果它看到"0"或"1",则抛出"Bad Format"异常.

那么,鉴于此,将这样的值解析为布尔值的最佳方法是什么?

(不幸的是,我只限于.NET 2.0解决方案,但如果v3.5提供了一些东西,我很乐意听到它.)

.net xml boolean xml-attribute .net-2.0

19
推荐指数
1
解决办法
2万
查看次数

如何抑制杰基尔的空白线?

我在我的博客上使用GitHub页面,并且遇到了Jekyll的问题.我的post.html有一个这样的块:

{%    for testpost in site.posts   %}
{%           four                  %}
{%          lines of               %}
{%         processing              %}
{%         goes here               %}
{%    endfor                       %}
Run Code Online (Sandbox Code Playgroud)

中间的部分并不重要.重要的部分是在{% %}标记之外的行的结尾,因此被渲染到html中.由于这是一个循环,它在HTML页面的中间放置了大约1000个空白行.它不会影响显示,但会造成View/Source的麻烦.

关于如何避免这些额外空白线的任何想法?

liquid-layout liquid jekyll github-pages

19
推荐指数
3
解决办法
5378
查看次数

使用战略模式的好处在哪里?

在维基百科上看过这个解释,特别是C++示例,并且没有认识到只定义3个类,创建实例和调用它们之间的区别,以及那个例子.我看到的只是将其他两个类放入流程中,无法看到哪里会有好处.现在我肯定我错过了一些明显的东西(树木) - 有人可以用一个明确的现实世界的例子来解释它吗?


到目前为止,我可以从答案中得到什么,在我看来,这只是一种更为复杂的方式:

have an abstract class: MoveAlong with a virtual method: DoIt()
have class Car inherit from MoveAlong, 
     implementing DoIt() { ..start-car-and-drive..}
have class HorseCart inherit from MoveAlong, 
     implementing DoIt() { ..hit-horse..}
have class Bicycle inherit from MoveAlong, 
     implementing DoIt() { ..pedal..}
now I can call any function taking MoveAlong as parm 
passing any of the three classes and call DoIt
Isn't this what Strategy intents? (just simpler?)
Run Code Online (Sandbox Code Playgroud)

[编辑 - 更新]我在上面引用的函数被替换为另一个类,其中MoveAlong属于属性,根据需要根据在这个新类中实现的算法设置.(与接受的答案中的内容类似.)


[编辑 - 更新] …

design-patterns strategy-pattern

12
推荐指数
3
解决办法
9820
查看次数

如何在Linq to SQL中使用distinct with group

我正在尝试将以下sql转换为Linq 2 SQL:

select groupId, count(distinct(userId)) from processroundissueinstance 
group by groupId
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

var q = from i in ProcessRoundIssueInstance
    group i by i.GroupID into g
    select new
    {
        Key = g.Key,
        Count = g.Select(x => x.UserID).Distinct().Count()
    };
Run Code Online (Sandbox Code Playgroud)

当我运行代码时,我不断获得无效的GroupID.有任何想法吗?看起来不同的是搞砸了......

这是生成的sql:

SELECT [t1].[GroupID] AS [Key], (
SELECT COUNT(*)
FROM (
    SELECT DISTINCT [t2].[UserID]
    FROM [ProcessRoundIssueInstance] AS [t2]
    WHERE (([t1].[GroupID] IS NULL) AND ([t2].[GroupID] IS NULL)) 
       OR (([t1].[GroupID] IS NOT NULL) 
            AND ([t2].[GroupID] IS NOT NULL) 
            AND ([t1].[GroupID] = [t2].[GroupID]))
    ) AS [t3] …
Run Code Online (Sandbox Code Playgroud)

.net c# linq linq-to-sql

11
推荐指数
2
解决办法
3万
查看次数

忽略Oracle DUP_VAL_ON_INDEX异常有多糟糕?

如果用户至少查看过一次对象,我有一张表正在录制,因此:

 HasViewed
     ObjectID  number (FK to Object table)
     UserId    number (FK to Users table)
Run Code Online (Sandbox Code Playgroud)

两个字段都不是NULL,并且一起形成主键.

我的问题是,因为我不关心有人看过一个对象多少次(在第一次之后),我有两个处理插入的选项.

  • 执行SELECT计数(*)...如果未找到任何记录,请插入新记录.
  • 总是只插入一条记录,如果它抛出DUP_VAL_ON_INDEX异常(表明已有这样的记录),就忽略它.

选择第二种选择的缺点是什么?

更新:

我想最好的方法是:"异常引起的开销是否比初始选择引起的开销更糟?"

sql oracle plsql exception

10
推荐指数
1
解决办法
2万
查看次数

在C#中将setter添加到虚拟属性

我有这样的情况:

public abstract class BaseClass 
{
   public abstract string MyProp { get; }
}
Run Code Online (Sandbox Code Playgroud)

现在,对于某些派生类,属性值是一个合成值,因此没有setter:

public class Derived1 : BaseClass
{
    public override string MyProp { get { return "no backing store"; } }
}
Run Code Online (Sandbox Code Playgroud)

这很好用.但是,某些派生类需要更传统的后备存储.但是,无论我如何编写它,如在自动属性上,或使用显式的后备存储,我都会收到错误:

public class Derived2 : BaseClass
{
    public override string MyProp { get; private set;}
}

public class Derived3 : BaseClass
{
    private string myProp;
    public override string MyProp 
    { 
        get { return myProp;} 
        private set { myProp = value;}
    }
}
Run Code Online (Sandbox Code Playgroud)

Derived2.MyProp.set':无法覆盖,因为'BaseClass.MyProp'没有可覆盖的set访问器

我如何让它工作?

.net c# properties automatic-properties

9
推荐指数
1
解决办法
1万
查看次数