mahmoud omar Ответов: 1

Как я использую linq в C#?


i have 2 table>> 
table1 >> id | name
1 | x
2 | y
3 | z

table2 >> id | table1_id | date
1 | 1 | 1/5/2017
2 | 1 | 2/5/2017
3 | 1 | 3/5/2017
4 | 2 | 2/5/2017
5 | 2 | 2/6/2017

i want select name from table1 that find in table2 , and if it's repeated get one value using last date.


Что я уже пробовал:

как я могу это сделать с помощью linq?

1 Ответов

Рейтинг:
1

OriginalGriff

Попробуй:

DataTable dt1 = new DataTable();
dt1.Columns.Add("Id");
dt1.Columns.Add("Name");
dt1.Rows.Add(1, "x");
dt1.Rows.Add(2, "y");
dt1.Rows.Add(3, "z");
DataTable dt2 = new DataTable();
dt2.Columns.Add("Id");
dt2.Columns.Add("TableId");
dt2.Columns.Add("Date");
dt2.Rows.Add(1, 1, new DateTime(2017, 5, 1));
dt2.Rows.Add(2, 1, new DateTime(2017, 5, 2));
dt2.Rows.Add(3, 1, new DateTime(2017, 5, 3));
dt2.Rows.Add(4, 2, new DateTime(2017, 5, 2));
dt2.Rows.Add(5, 2, new DateTime(2017, 6, 2));
var y = dt2.AsEnumerable().GroupBy(g => g["TableId"]).Select(g => new {Id = g.Key, Date = g.Max(m => m["Date"])});
var x = from d1 in dt1.AsEnumerable()
        join d2 in y
        on d1["Id"] equals d2.Id
        select new { Name = d1["Name"] as string, Date = d2.Date };


Maciej Los

5ed!