[C#]用LINQ挑出有兩欄重覆的資料

[C#]用LINQ挑出有兩欄重覆的資料

假設 有一隻程式的功能是需要用excel要把受訓成績匯入檔案到db

而他的欄位如下

受訓日期,受訓人員,受訓成績

但是為了要避免重覆輸入,所以我們要把 受訓日期,受訓人員 有重覆的挑出來

[C#]用LINQ計算陣列中項目出現的次數 這篇

不一樣的是 這次 重覆的欄位 有兩個,而那篇 重覆的欄位只有一個

那重覆的欄位 有兩個 要如何挑出來呢

我的想法是 把 日期+姓名 做group by

這樣就可以很簡單的把 有重覆日期+人員 的資料挑出來了

範例code如下

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml.Linq;
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }  
        class employee
        {
            private string m_date;
            private string m_name;
            private int m_score;
            public employee(string cdate, string name, int score)
            {
                m_date = cdate;
                m_name = name;
                m_score = score;
            }
            public override string ToString()
            {
                return  m_date +","+ m_name;
            } 
        }
        private void button1_Click(object sender, EventArgs e)
        {
            List<employee> employees = new List<employee>
            {
                new employee("2012/1/18","龍龍一",100),
                new employee("2012/1/18","龍龍二",100),
                new employee("2012/1/18","龍龍三",100),
                new employee("2012/1/19","龍龍一",100),
                new employee("2012/1/19","龍龍二",100),
                new employee("2012/1/19","龍龍三",100), 
                new employee("2012/1/18","龍龍三",100),
                new employee("2012/1/18","龍龍一",100),
            };
            var q =
from p in employees
group p by p.ToString() into g
where g.Count() > 1 //只顯示超過一次以上的
select new
{
    g.Key,       
    count = g.Count() 
};
            string stremp = "";
            foreach (var x in q)
            {
                stremp += x.ToString() + Environment.NewLine;
            }
            MessageBox.Show(stremp);
        }
    }
}

 


如有錯誤 歡迎指正