출처1 : http://blog.daum.net/starkcb/65

출처2 : http://stackoverflow.com/questions/3829129/use-linq-to-group-data-from-datatable#3829196



using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

 

namespace arrayTest

{

 

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

 

        List<Test> list = new List<Test>();

        List<Test> listB = new List<Test>();

        DataTable dtA = new DataTable();

        DataTable dtB = new DataTable();

 

        private void Form1_Load(object sender, EventArgs e)

        {

            for (int i = 0; i < 10; i++)

            {

                list.Add(new Test { Na = "A" + i });

            }

            for (int i = 0; i < 5; i++)

            {

                listB.Add(new Test { Na = "A" + i });

            }

 

            dtA.Columns.Add("Name");

            for (int i = 0; i < 10; i++)

            {

                dtA.Rows.Add("A" + i);

            }

 

            dtB.Columns.Add("Name");

            for (int i = 0; i < 5; i++)

            {

                dtB.Rows.Add("A" + i);

            }

 

            //배열과 배열

            var obj = from n in list

                      let places = from p in listB select p.Na

                      where places.Contains(n.Na) // 없는 것을 찾으려면(not in) !places.Contains(n.Na)

                      select n;

 

            //배열과 데이터테이블

            var obj2 = from n in list

                       let places = from p in dtB.AsEnumerable() select p.Field<string>("Name")

                       where places.ToList<string>().Contains(n.Na) // 없는 것을 찾으려면(not in) !places.ToList<string>().Contains(n.Na)

                       select n;

 

            //데이터테이블과 배열

            var obj3 = from n in dtA.AsEnumerable()

                       let places = from p in listB select p.Na

                       where places.Contains(n.Field<string>("Name"))

                       select n;

 

            //테이터테이블과 테이터테이블

            var obj4 = from n in dtA.AsEnumerable()

                       let places = from p in dtB.AsEnumerable() select p.Field<string>("Name")

                       where places.ToList<string>().Contains(n.Field<string>("Name"))

                       select n;

        }

    }

    public class Test

    {

        public string Na { get; set; }

    }

}

 
























Posted by motolies
,