.Net Convert DataTable to Json – 如何把DataTable轉換成Json Object

今天終於可以繼續在公司做ASP.Net MVC的Project了..
由於最近學了AngularJs 所以便喜歡把資料轉成 json
之後放在Angular上使用..

解決方法十分簡單

我們可以使用Json.Net
大家可以使用 Nuget來安裝 Json.Net

Install Json.NET via NuGet

之後做可以使用JsonConvert.SerializeObject()這個功能來把 DataTable轉成Json Object
E.g.

// Convert DataTable to Json as a String
string json = JsonConvert.SerializeObject(tbl, new DataTableConverter());
//output result
console.log(json);

Hope you find it useful

How to Work Smart [Remark – Not a good working attitude to have] – 如何醒目地工作 [在一個不是正確的工作態度]

突然間又有感而發…

出來工作已經有很長的時間..
所謂日久見人心..
人亦都會越學越醒目..

以下是我所認識到的聰目工作態度… [長遠來說..對公司發展會有一定的影響]

在以下情況他們很大機會選擇不回覆電郵

1)  即使Email 是和他們負責的工作相關的..但是主題上沒有說名是給那一個同事

2)  即使Email 是和他們負責的工作相關的..和已在電郵上說名是給誰..但是上面有多個一個同事的名稱

3)  即使Email 是和他們負責的工作相關的..和已在電郵上說名是給誰..但是上面有多個一個同事的名稱…而你的名稱不是第一個寫的

有時候需要同事幫忙去解決一些問題
1)
他會回答:
[我好忙..沒有時間…]
事實是:
轉過頭來.. 不到5分鐘便看到他們看 Facebook/ Hotmail 或在看一些和工作沒有關係的網頁

2)
他會回答:
[不好意思..我不明白問題是什麼..看了也不明白]
[太混亂了..看不懂…]
[可不可以再用容易的方法解釋多一次…]
事實上
[已經用了很多方法去解釋..但是他們只需要用方法說不明白..便可以逃避問題..他們目的是要令你感到已經解釋到很煩…所以不會再打擾他們上網的時間]

另外一些權宜之計是
[我過一會去看看]
過了一會又在看網頁或是做其他和工作沒有關係的東西
那你便會再去請他去解決問題..他們應該做的事

之後他們便會回答
[我馬上去看看…]
事實上
[他們又繼續做和工作沒有關的東西或和同事說天說地]
當你再問他們的時候..
他們便會回答
[不好意思..十分繁忙..忘記了這件事..真的不好意思…]
事實上都是忙和工作沒有關的東西或和同事說天說地

另一個答案是
[我沒有時間… ]

[今天我沒有時間…]
事實上..
[他們午餐時已經吃長了.. 應該是一小時..他們用..一小時十五分..或是遲到上班…
所以他們應該要蛕返時間..去解決問題..
他們便時這樣..最準時的時下班和午餐…什麼都不用準時]

開會篇
當和同事有工作會議時..最重要時久不久加一些和工作沒有關係的話題..
原定15 – 30 分鐘的會議分分鐘可以花45分鐘到1小時..
最重要是開會.. 可以不用工作..所以有時越長越開心..

結論
當和一些沒有心去做好佢份工的同事工作..

當然..認真.你便輸了..

所以要跟著環境去適應工作應有的態度…
當然不可以失去自己本身的 個人核心價值

因為到最後自己是怎樣是看自己的做化的..
你們可能會想..不怕被同事看到這一個網誌嗎?

我是說事實..又有什麼要害怕呢..
是十家工作態度不同…想法不同…
他們希望安穩地工作..
我比較喜歡不斷進步!!! 不想浪費自己的青春…

有機會再和大家分享…

Google OAuth API – Error fetching OAuth2 access token, message: ‘invalid_grant’

當嘗試使用 Google OAuth API 時出現以下的錯誤信息
Error fetching OAuth2 access token, message: ‘invalid_grant’
Error fetching OAuth2 access token, message: 'invalid_grant'

嘗試測試得久..也找不到怎樣解決..
最後發現..這個錯誤信息的意思 大概是因為OAuth return 回來的code 的值 出現問題
這可能是因為你的程式碼意外地 執行了多過一次..
令到你嘗試使用Google OAuth API 來取得使用者的資料時 這個Code已經不再有效
E.g. 新Request的Code已經取代了你嘗試使用的 code

解決方去
要細心看看有沒有什麼地方加了Google OAuthAuthenticate 的程式碼 又執行了 多次

Hope you find it useful

Fatal error: Unable to find local grunt

今天朋友幫我的一個網頁升級了使用GruntAutomate 一些Task
E.g. Minify CSS / JS 等等.. 有時間會在大家分享使用GruntJS 的好處
http://gruntjs.com/

當我嘗試使用Grunt的時候出現了這個錯誤信息…

Fatal error: Unable to find local grunt.
Fatal error: Unable to find local grunt,

grunt-cli: The grunt command line interface. (v0.1.13)

Fatal error: Unable to find local grunt.

If you’re seeing this message, either a Gruntfile wasn’t found or grunt
hasn’t been installed locally to your project. For more information about
installing and configuring grunt, please see the Getting Started guide:

http://gruntjs.com/getting-started

記得自己的電腦上已經安裝了Grunt 而他的錯誤信息也說明 安裝在電腦上的版本名稱
grunt-cli: The grunt command line interface. (v0.1.13)

為什麼還是找不到呢..

做了一會Research之後發現..原來需要在每一個Project 的資料夾上 都要安裝一次的

解決方法

我們可以在這個Project上的Root資料夾執行下以指令

npm install grunt --save-dev

Install GruntJS

在這個資料夾內安裝了Grunt [Local 的 Grunt]
便可以執行Grunt

建議在安裝完Grunt之後要耐執行以下指令..

npm install

用來更新這個Grunt/ProjectDependence
npm Install -> to install missing dependency

安裝完成後便可以再次執行 Grunt

Grunt

GruntJs is runningGrunt

Hope you find it useful

Linq compare 2 lists – .Net Check if Items Not exist on current List – 如何在2個Lists 中找出和第二個List不相同的Item 項目

之前和大家介紹了怎樣可以找出在2個List of String上找出2個List 都有的 Item 出來

今天想和大家介紹怎樣從兩個Lists 中找出 第一個List上 在第二個List裡面沒有的 Item

我們可以使用 ListExcept 功能

			// Source List with String A,B,C,D,E
			List listA = new List();
            listA.Add("A");
            listA.Add("B");
            listA.Add("C");
            listA.Add("D");
            listA.Add("E");

			// List To Compare with String 1,A,4,E,5
            List listB = new List();
            listB.Add("1");
            listB.Add("A");
            listB.Add("4");
            listB.Add("E");
            listB.Add("5");

			// Retrieve the List of String which does not appear on the second List
            List matchList = listA.Except(listB).ToList().ForEach(Console.WriteLine);


Linq compare 2 lists - .Net Check if Items Not exist on current List - 如何在2個Lists 中找出和第二個List不相同的Item 項目
Happy Coding

LINQ try to get a list of int from string – 如何使用Linq在String上取出所有數字出來

今天要為同事解決一個 在ASP.Net MVC [.Net]將String 轉成List of Int的問題

情況是這樣的:
公司的一個ASP.Net MVC 的Project 上..客戶會在 WebGrid上的checkbox上選擇需要的東西..
我的同事便寫了一個隱藏的field 每當客戶選擇或取消選項時..
他用了Javascript 來把數據append 到隱藏的field上
他便用”|” 來把數據分隔
但是我們還是要做一些Validation
避免數據有問題時..會令到這個程式碼/程序出現問題
E.G.
1|ab|| | 3 |4|
有空格或有字母時..當把數據轉到List Of Int時便會出現錯誤了

由於他工作放大假中..
所以我便要去解決他沒有解決的問題了
就是用.net去把這一個 String轉成 List of Int..

開頭我都有一些不知如何是好..
因為可以用一個比較簡單的方法..
但是可能要寫多很多的程式碼
就是先建立一個StringArray..
之後用Int.TryParse來把 成功認到是Int的 數據加進另一個List of Int上..
感覺不太好..

做了一些research 之後終於找到解決方法了:
解決方法:

我們可以嘗試使用LINQ 的方法去解決這個問題

  // Input
  string tempInput = "1|ab|| | 3 |4|";

  // This value is used for int.TryParse reference
  int tempVal=0;
  List intList = (from i in tempInput.Split('|').ToList()
                                          where int.TryParse(i, out tempVal)
                                          select  int.Parse(i)).ToList();
  int noOfInt = intList.Count();
  // Output number of integer recognised 
  Console.WriteLine("No of Int: " + noOfInt.ToString());
  
  for(int i = 0; i< intList.Count(); i++){
  	// Output the recognised integer one by one
  	Console.WriteLine(intList[i].ToString());
  }
  

Use Linq to extract List of Integer from string

Happy Coding

Linq compare 2 lists – .Net Check if Items exist on Both Lists – .Net如何在2個Lists 中找出相同的Item 項目

今天需要寫一個功能去看看2個 List of String 上有那些String 是2個Lists內都有的

做了一會research後 終於找到解決方法了

我們可以使用 ListIntersect 功能

Linq - to get matched item from 2 lists of string

E.G.

            	// Source List with String A,B,C,D,E
            			List listA = new List();
            listA.Add("A");
            listA.Add("B");
            listA.Add("C");
            listA.Add("D");
            listA.Add("E");

            			// List To Compare with String 1,A,4,E,5
            List listB = new List();
            listB.Add("1");
            listB.Add("A");
            listB.Add("4");
            listB.Add("E");
            listB.Add("5");

          			// Retrieve the List of String which appear on both List
            List matchList = listA.Intersect(listB).ToList();

            for (int i = 0; i < matchList.Count; i++)
            {
               			// Output the list of matched string
                Console.WriteLine(matchList[i]);
            }

Happy Coding