none
LINQ Query DataGridView 某一個欄位的Cell value 是否介於某個範圍 RRS feed

  • 問題

  •       List<Int32> pResultList = dgView.Rows.Cast<DataGridViewRow>()
                        .Where(r => Convert.ToDouble(r.Cells["Volume"].Value) > 1500)
                        .Select(r => r.Index)
                        .ToList();

    上述的語法可以得到所要的結果

    接著想要取得 2500 ~ 1500 的時候

    突然想到一個問題 :

    如果寫成

    Where(r => Convert.ToDouble(r.Cells["Volume"].Value) > 1500 && Convert.ToDouble(r.Cells["Volume"].Value) < 2500)

    效率是否降低?

    是否有其他的方式,可以先針對某個 cell value 轉型後也變成一個別名變數 Volume

    然後語法變成類似

    Where(r => Volume > 1500 && Volume < 2500)

    還請多多指教!!

    2014年12月9日 上午 06:59

解答

  • cell  的內容是個 Object 型別, 所以非得轉來轉去不可.
    要 Where(r => Volume > 1500 && Volume < 2500) 這樣也有可能, 因為反正是匿名函式, 就只是在前面先做 Convert 而已.

                List<string> s = new List<string>();
                s.Where((x) =>
                {
                    int y = 0;
                    y = Convert.ToInt32(x);
                    if (y > 100)
                    {
                        return true;
                    }
                    else
                    {
                        return false;
                    }
    
                });


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。


    2014年12月9日 上午 08:15
    版主

所有回覆

  • 你為什麼不直接從 DataGridView 的資料來源處理, 而要去處理 DataGridView ?

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2014年12月9日 上午 07:20
    版主
  • 感謝板主的題示

    主要原因是,目前 DataGridView 並沒有關聯到 DataSource
    (我了解應該要朝這樣的架構去設計程式才會有好處...例如現在)

    所以...到了現在需要用到LINQ語法的時候
    就發現這樣的問題

    還請指點一下,語法上是否還有機會達到我的要求呢?
    THANKS~

    2014年12月9日 上午 07:29
  • cell  的內容是個 Object 型別, 所以非得轉來轉去不可.
    要 Where(r => Volume > 1500 && Volume < 2500) 這樣也有可能, 因為反正是匿名函式, 就只是在前面先做 Convert 而已.

                List<string> s = new List<string>();
                s.Where((x) =>
                {
                    int y = 0;
                    y = Convert.ToInt32(x);
                    if (y > 100)
                    {
                        return true;
                    }
                    else
                    {
                        return false;
                    }
    
                });


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。


    2014年12月9日 上午 08:15
    版主