顯示具有 C# 標籤的文章。 顯示所有文章
顯示具有 C# 標籤的文章。 顯示所有文章

2016年5月29日 星期日

RegularExpressions 正規表示式檢查函式


正整數1-3位或正整數含1-2位小數的浮點數

^(([0-9]{1,3})([.][0-9]{1,2})?)$


Email



身份証字號



手機



家用電話




2014年12月8日 星期一

聰明的動態型別 dynamic

程式碼:

           
dynamic d = 1; //初始型別是數字
        
Console.WriteLine("d type :{0},d status:{1}", d.GetType(),d);
           
d += "test";  //故意加上文字(正常這裡vs2013編輯器就會顯示錯誤了)

Console.WriteLine("d type :{0},d status:{1}", d.GetType(), d);

Console.ReadKey();



結果:可以看到d初始型別是int32,加上文字後自動將型別轉成字串型別,沒有顯示任何錯誤













動態型別可以略過編輯時期檢查,還會自動改變型別真是太讚了!


更多內容可以參考此篇:

了解 C# 4 的動態關鍵字

2014年12月7日 星期日

[LinQ] Groupby 與 ToLookup 差異


成績類別:


    public class Grade {
        public string Name { get; set; }
        public int Value { get; set; }
        public string Group { get; set; }
    }                                                                                   


主程式:


            List<Grade> val= new List<Grade> { 
                new Grade{Name="alvin",Value=85,Group ="A"},
                new Grade{Name="lily",Value=75,Group="B"},
                new Grade{Name="john",Value=65,Group="C"},
                new Grade{Name="helen",Value=77,Group="B"},
                new Grade{Name="mary",Value=78,Group="B"},
                new Grade{Name="jack",Value=89,Group="A"},
            };


            var gok = val.GroupBy(c => c.Group);    //GroupBy還沒有將資料取回
            var lok = val.ToLookup(c => c.Group);    //此段已將資料取回

            val.RemoveAll(c => true );   //將原始資料清空

            Console.WriteLine("==========GroupBy start==========");
            foreach (var g in gok) {       
                Console.WriteLine("=====group:{0}=====", g.Key);
                foreach (var p in g) {
                    Console.WriteLine("name:{0},value:{1},group:{2}",p.Name  ,p.Value  ,p.Group  );
                }
            }
          
            
            Console.WriteLine("==========ToLookup start==========");
            foreach (var g in lok) {
                Console.WriteLine("=====group-{0}=====", g.Key);
                foreach (var p in g) {
                    Console.WriteLine("name:{0},value:{1},group:{2}",p.Name  ,p.Value ,p.Group   );
                }
            }    
            Console.ReadKey();


結果:Groupby沒有資料出現,因為Groupby時沒有立即將資料取回,所以後面Removeall後,再執行就沒資料可用















完整程式碼:

https://www.dropbox.com/s/72p8ayukwaauyun/20141205.txt?dl=0

結果:差別在立即將資料取回(ToLookup)和延遲取回資料(Groupby)

2014年12月6日 星期六

[委派] Console測試匿名委派


委派函式:

delegate void TestDelegate(string str);


程式碼:
       
static void Main(string[] args) {
     TestDelegate t1 = (string s1) => { Console.WriteLine("print from s1:" + s1); };
     TestDelegate t2 = (string s2) => { Console.WriteLine("print from s2:" + s2); };

     t1 += t1 + t2 + t1;
     t1("Hello");
     t1.Invoke("Hello world");
     Console.ReadKey();
}


結果:










更多內容可以參考:

Lambda 運算式 (C# 程式設計手冊)


2014年11月23日 星期日

各版本的Sql connection 字串寫法

LocalDB:
<add name="ConnectionStringName" providerName="System.Data.SqlClient"  
connectionString="Data Source=(LocalDB)\v11.0;AttachDbFileName=|DataDirectory|\DatabaseFileName.mdf;InitialCatalog=DatabaseName;Integrated Security=True;MultipleActiveResultSets=True" />

Sql Express:
<add name="ConnectionStringName" providerName="System.Data.SqlClient"
    connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=DatabaseName;Integrated Security=True;MultipleActiveResultSets=True"/>
Sql Server:
<add name="ConnectionStringName" providerName="System.Data.SqlClient"
    connectionString="Data Source=ServerName;Initial Catalog=DatabaseName;Integrated Security=False;User Id=userid;Password=password;MultipleActiveResultSets=True" />                        

SQL Azure:
<add name="ConnectionStringName"  providerName="System.Data.SqlClient"
    connectionString="Data Source=tcp:ServerName.database.windows.net,1433;Initial Catalog=DatabaseName;Integrated Security=False;User Id=username@servername;Password=password;Encrypt=True;TrustServerCertificate=False;MultipleActiveResultSets=True" />

Entity Framework Database:
<add name="ConnectionStringName"  providerName="System.Data.EntityClient"
    connectionString="metadata=res://*/ ContextClass.csdl|res://*/ ContextClass.ssdl|res://*/ ContextClass.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=ServerName;Integrated Security=False;User Id=userid;Password=password;MultipleActiveResultSets=True&quot;" />

Sql Compact:
<add name="ConnectionStringName" providerName="System.Data.SqlServerCe.4.0"
    connectionString="Data Source=|DataDirectory|\DatabaseFileName.sdf" />

熱門文章