小编Hao*_*Hao的帖子

重载运算符==后,如何比较两个变量是否指向同一个对象?

重载比较运算符,如何比较两个变量是否指向同一个对象(即不是值)

public static bool operator ==(Landscape a, Landscape b)
{
    return a.Width == b.Width && a.Height == b.Height;
}

public static bool operator !=(Landscape a, Landscape b)
{
    return !(a.Width == b.Width && a.Height == b.Height);
}
Run Code Online (Sandbox Code Playgroud)

c# operator-overloading operators equals-operator

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

Postgresql:是“公共的”。在 Postgresql 中完全限定表名的标准方法?

如果我不符合“公众”的资格。在 account_category 表上,out account_category将与 account_category 表名称发生冲突。

是否“公开”。也适用于其他 RDBMS?

CREATE OR REPLACE FUNCTION X_RAIN(x VARCHAR, OUT user_id VARCHAR, out account_category varchar, out depth int) returns setof record
AS 
$$
BEGIN
     return query 
     select uar.account_id, c.account_category, c.depth
     from account_with_types_chart_of_account uar
     inner join public.account_category c using(account_category_id);
END;
$$ LANGUAGE 'plpgsql';
Run Code Online (Sandbox Code Playgroud)

postgresql namespaces

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

Postgresql:如何使全文搜索忽略某些标记?

是否有一个魔术函数或运算符来忽略某些标记?

select to_tsvector('the quick. brown fox') @@ 'brown' -- returns true

select to_tsvector('the quick,brown fox') @@ 'brown' -- returns true

select to_tsvector('the quick.brown fox') @@ 'brown' -- returns false, should return true

select to_tsvector('the quick/brown fox') @@ 'brown' -- returns false, should return true
Run Code Online (Sandbox Code Playgroud)

postgresql full-text-search

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

有没有办法可以强制执行方法来遵循某些方法签名?

让我说我有

public delegate DataSet AutoCompleteDelegate(
      string filter, long rowOffset);
Run Code Online (Sandbox Code Playgroud)

我可以使用以下类来强制执行该方法签名吗?(只是一个想法):

public class MiddleTier
{
    [Follow(AutoCompleteDelegate)]
    public DataSet Customer_AutoComplete(string filter, long rowOffset)
    {
        var c = Connect();
        // some code here
    }

    [Follow(AutoCompleteDelegate)]
    public DataSet Item_AutoComplete(string filter, long rowOffset)
    {
        var c = Connect();
        // some code here
    }



    // this should give compilation error, doesn't follow method signature
    [Follow(AutoCompleteDelegate)]
    public DataSet BranchOffice_AutoComplete(string filter, string rowOffset)
    {
        var c = Connect();
        // some code here
    }         

}
Run Code Online (Sandbox Code Playgroud)

[编辑]

目的:我已经将属性放在我的middletier的方法中.我有这样的方法:

public abstract …
Run Code Online (Sandbox Code Playgroud)

c# attributes design-patterns enforcement

5
推荐指数
2
解决办法
1732
查看次数

如何在SQL中使用类似C#的行为进行等式比较?

如何比较SQL中的值的等价与null?

对于熟悉C#的人,以下是比较可空值的结果:

null == null : true
null == john : false
null == paul : false
john == null : false
john == john : true
john == paul : false
paul == null : false
paul == john : false
paul == paul : true
Run Code Online (Sandbox Code Playgroud)

我在SQL中找到的最简单的解决方案是将可空字段合并为一些sentinel值(例如'scoobydoo')然后比较它们

coalesce(A, 'scoobydoo') = coalesce(B, 'scoobydoo')
Run Code Online (Sandbox Code Playgroud)

但是,如果有人使用sentinel值,那么这就是普通的kludge,如果A恰好是NULL而B是'scoobydoo',那么上面的表达式会产生真值

这正是我要求上面代码逻辑的目的(T-SQL UPDATE触发器):

-- detect if the value changes

if (select invoice_date from inserted) <> 
   (select invoice_date from deleted) begin

    -- do something to summary tables here …
Run Code Online (Sandbox Code Playgroud)

c# sql compare equality

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

如何强制刷新DataGridView的内容?

我想做一个有序的datagridview输入.以下代码片段并没有完全消除它; 即使我放了一个grd.Refresh,datagridview也不会显示更新的值.如果我按下向下箭头键并再次上升,网格就会刷新.有没有其他方法可以强制刷新datagridview的内容?

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace TestSortedInput
{
    public partial class Form1 : Form
    {
        DataTable _dt = new DataTable();

        public Form1()
        {
            InitializeComponent();

            grd.AllowUserToAddRows = false;

            _dt.Columns.Add("sort", typeof(int));
            _dt.Columns.Add("product", typeof(string));

            _dt.DefaultView.Sort = "sort";

            grd.DataSource = _dt;
        }

        private void dataGridView1_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Insert)
            {                
                if (e.Modifiers == 0)
                {
                    var r = _dt.NewRow();
                    r["sort"] = _dt.DefaultView.Count + 1;
                    r["product"] = "";

                    _dt.Rows.Add(r);
                } …
Run Code Online (Sandbox Code Playgroud)

c# datagridview refresh sorted

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

与可空值进行SQL等式/不等式比较

第一次采取,kludge解决方案,哨兵方法(你的程序不应该允许输入标记值):

 select coalesce(a, -2147483648) = coalesce(b, -2147483648) as is_equal -- a little postgresism
Run Code Online (Sandbox Code Playgroud)

假设您忘记阻止程序上的标记值,用户在B字段上输入-2147483648,A为空.上面的代码报告为true,如果报告为false,则不应报告true或null.

比较可空字段上的相等性最简洁的方法是什么?A == B应仅报告真或假,无论字段是否可为空.

sql postgresql comparison equality

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

如何使DataTable可枚举?

我不能在DataTable上使用AsEnumerable(),我使用的是C#3,但我只是针对2.0框架(LINQ功能是由LINQBridge提供的).有没有什么办法可以在不使用Select()的情况下使DataTable可枚举?

bool isExisting = (bdsAttachments.DataSource as DataTable).Select().Any(xxx => (string)dr["filename"] == filename);
Run Code Online (Sandbox Code Playgroud)

更新:

我希望它看起来像这样:

bool isExisting = (bdsAttachments.DataSource as DataTable).AsEnumerable().Any(xxx => (string)dr["filename"] == filename);
Run Code Online (Sandbox Code Playgroud)

我理解的DataTable的选择方法返回一个副本的端倪,我想只使用AsEnumerable,问题是,我只是针对2.0框架,System.Data.DataSetExtensions不可用

顺便说一句,我试过这个:http://cs.rthand.com/blogs/blog_with_righthand/archive/2006/01/15/284.aspx,但有编译错误.

c# datatable ado.net enumerable .net-2.0

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

如何向用户解释哑主键的优点?

主要吸引力

我有一个老板(以及用户)希望主键是复杂/智能/有吸引力的控制号码(有点像社会安全号码或信用卡号码格式)

我只是用零填充主键(在视图中)来安抚他们希望使控件编号复杂,智能和有吸引力的愿望.但他们希望它是:前2位的客户端代码,然后4个位数的同比,那么最后4位数字作为交易号该客户端上给定的一年,那么客户的交易数量重置为1的时候,明年流动.每个客户的交易以1开头.例如WM20090001,WM20090002,BB2009001,WM20100001,BB20100001

但是,由于我想尽可能简单,我放弃了他们建议的智能在主键中,我只是保持主键自动增量,无论客户端和年份.但是为了让它看起来不那么沉闷(他们真的坚持把主键作为智能控制号),我让主键看起来很聪明,在查看查询时,我把客户端代码和四位数年份代码放在前面八零填充自动增量键,即WM200900000001.在自动增量主键上排序类似slug的信息.

保持主键自动递增而不管任何其他信息,我们能够在编辑记录时保留其他潜在的副作用问题,例如,如果他们在WM上输入事务时出错,那么他们将客户端代码编辑为BB,如果我们使用智能主键,WM客户的主键在控制数量上会有差距.或者更糟糕的是,而不是让控制数字有差距/孔,用户将要求这些差距的后续记录应该转移达到这些差距,并有后续记录主键重新调整(递减).

  • 您如何处理这些用户请求(合理或其他)?
  • 你屈服于他们的要求吗?
  • 或者只是继续使用哑主键并向他们解释拥有一个非常智能/复杂的主键的影响,并教育他们拥有一个愚蠢的主键的显着优势?

PS

新书报价(https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-1044961.html):

"如果你第一次用舌头问他们对他们来说是合理的要求,那么事情最终会好起来的."

database-design primary-key

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

解析是获取成员类型的唯一方法吗?

下面的反射代码返回:

System.Collections.Generic.IList`1[TestReflection.Car] Cars
Run Code Online (Sandbox Code Playgroud)

如何Cars通过反射获得根类型?不IList<Car>- 我怎么能得到Car

using System;
using System.Reflection;
using System.Collections.Generic;

namespace TestReflection
{
    class MainClass
    {
        public static void Main(string[] args)
        {
            Type t = typeof(Dealer);
            MemberInfo[] mi = t.GetMember("Cars");

            Console.WriteLine("{0}", mi[0].ToString());
            Console.ReadLine();
        }
    }

    class Dealer
    {
        public IList<Car> Cars { get; set; }
    }

    class Car
    {
        public string CarModel { get; set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

.net c# generics reflection

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