powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Помогите написать LINQ запрос.
3 сообщений из 3, страница 1 из 1
Помогите написать LINQ запрос.
    #35922296
sorcen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть два класса:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
public class RecordItem
{
  public int Year { get; set; }
  public List<int> Monthes { get; set; }
}

public class Record
{
  private List<RecordItem> recordItems;
}

Задача объеденить с помощью LINQ два списка List<Record>:
Список 1:Year = 2008, Monthes = {1,2}
Year = 2009, Monthes = {6,7}
Список 2:Year = 2009, Monthes = {7,8}
Year = 2010, Monthes = {1,3,4}
Необходимо получить:
Year = 2008, Monthes = {1,2}
Year = 2009, Monthes = {6,7,8}
Year = 2010, Monthes = {1,3,4}
...
Рейтинг: 0 / 0
Помогите написать LINQ запрос.
    #35922791
sorcen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашел такое решение:
Код: plaintext
1.
2.
3.
resultList = records1.recordItems.Union(records2.recordItems).
                GroupBy(c => c.Year, i => i.Monthes, 
                        (a, b) => new RecordItem(a, b.SelectMany(c => c).Distinct().ToList())
                       ).ToList();

Может кто-то лучше предложит?
...
Рейтинг: 0 / 0
Помогите написать LINQ запрос.
    #35922979
gp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот - более общий случай аггрегатного объекта для списка

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
public class RecordItem
		{
			public int Year { get; set; }
			public List<int> Monthes { get; set; }
		}

		public class Record
		{

			public IList<RecordItem> recordItems { get; private set; }
			public Record(IEnumerable<RecordItem> items)
			{
				recordItems = items.ToList();
			}
			public static IEnumerable<RecordItem> getAggregatedRecords(IEnumerable<Record> records)
			{
				var q =
					from g in (
						from i in (from r in records
						from i in r.recordItems
						select i)
					group i by i.Year
					)
					select new RecordItem(){
						Year = g.Key,
						Monthes = (
								from items in g
								from m in items.Monthes
								select m)
							.Distinct()
							.ToList()
					};
				return q;

			}
			public Record(IEnumerable<Record> records)
			{
				recordItems = getAggregatedRecords(records).ToList();
			}
		}

		[TestMethod]
		public void TestMethod1()
		{
			var records = new Record(
				new [] {
					new Record(new List<RecordItem>{
						new RecordItem{ Year = 2008, Monthes = new List<int>{1,2} },
						new RecordItem{ Year = 2009, Monthes = new List<int>{6,7} }
					}),
 
					new Record(new List<RecordItem> {
						new RecordItem{ Year = 2009, Monthes = new List<int>{7,8}},
						new RecordItem{ Year = 2010, Monthes = new List<int>{1,3,4}}
					})
				});
		}

нет дурацких вопросов, есть дурацкие ответы
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Помогите написать LINQ запрос.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]