powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Вложенный loop в LINQ
6 сообщений из 6, страница 1 из 1
Вложенный loop в LINQ
    #38539596
Manonia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите пожалуйста, как переписать след. выражение на LINQ:

Код: c#
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.
private IEnumerable<SqlDataRecord> getFCF(List<(Class1> cms)
        {
            List<SqlDataRecord> records = new List<SqlDataRecord>();

            foreach (Class1 cm in cms)
            {
                foreach (Class2 fcf in cm.Fcs)
                {
                    SqlDataRecord rec = new SqlDataRecord(TestMetaData);

                    rec.Add(cm.Id,
                        fcf.Ex.Id,
                        fcf.Ex.Name,
                        fcf.Name = fcf.Name ?? string.Empty,
                        fcfm.IsActive,
                        fcf.PrependSR,
                        fcf.UseFirm,
                        fcf.Prefix,
                        fcf.Suffix
                        );

                    records.Add(rec);
                }
            }

            return records;
}
...
Рейтинг: 0 / 0
Вложенный loop в LINQ
    #38539625
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Manonia, в чем смысл? Оставьте как есть... все же понятно написано...
ReSharper поставьте...

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
// http://www.linqpad.net/
void Main()
{
	var cms = new List<cm>()
	{
		 new cm(){Id = 1, Fcs = new List<fcf>(){new fcf() {Name = "a"} } }
		,new cm(){Id = 2, Fcs = new List<fcf>(){new fcf() {Name = "b"},  new fcf(){Name = "c"}} }
	};
	
	cms.Dump();
	var query = cms.SelectMany(x => x.Fcs );
	query.Dump();
}

class cm
{
	public int Id {get; set;}
	public List<fcf> Fcs {get; set;}
}

class fcf
{
	public string Name {get; set;}
}

...
Рейтинг: 0 / 0
Вложенный loop в LINQ
    #38539636
Manonia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
buser, Resharper не конвертит, может сложно для него? ;) я не совсем поняла ваш пример, мне на выходе нужно получить List<SqlDataRecord>.
...
Рейтинг: 0 / 0
Вложенный loop в LINQ
    #38539701
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ManoniaПодскажите пожалуйста, как переписать след. выражение на LINQ:

Код: c#
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.
private IEnumerable<SqlDataRecord> getFCF(List<(Class1> cms)
        {
            List<SqlDataRecord> records = new List<SqlDataRecord>();

            foreach (Class1 cm in cms)
            {
                foreach (Class2 fcf in cm.Fcs)
                {
                    SqlDataRecord rec = new SqlDataRecord(TestMetaData);

                    rec.Add(cm.Id,
                        fcf.Ex.Id,
                        fcf.Ex.Name,
                        fcf.Name = fcf.Name ?? string.Empty,
                        fcfm.IsActive,
                        fcf.PrependSR,
                        fcf.UseFirm,
                        fcf.Prefix,
                        fcf.Suffix
                        );

                    records.Add(rec);
                }
            }

            return records;
}


Как-то так:
Код: c#
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.
private SqlDataRecord ToRecord(int cmId, Class2 fcf)
{
    var record = new SqlDataRecord(TestMetaData);

    record.Add(cm.Id,
        fcf.Ex.Id,
        fcf.Ex.Name,
        fcf.Name ?? string.Empty,
        fcf.IsActive,
        fcf.PrependSR,
        fcf.UseFirm,
        fcf.Prefix,
        fcf.Suffix);

    return record;
}

private IEnumerable<SqlDataRecord> ToRecordCollection(int cmId, IEnumerable<Class2> collection)
{
    return collection.Select(x => ToRecord(cmId, x));
}

private IEnumerable<SqlDataRecord> ToRecordCollection(List<(Class1> cms)
{
    return cms.SelectMany(x => ToRecordCollection(x.Id, x.Fcs));
}
...
Рейтинг: 0 / 0
Вложенный loop в LINQ
    #38539705
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAКак-то так:
Код: c#
1.
2.
3.
4.
5.
private SqlDataRecord ToRecord(int cmId, Class2 fcf)
{
    var record = new SqlDataRecord(TestMetaData);

    record.Add(cmId,

Поправил...
...
Рейтинг: 0 / 0
Вложенный loop в LINQ
    #38552972
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ManoniaПодскажите пожалуйста, как переписать след. выражение на LINQ:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
return cms.SelectMany(cm=>cm.Fcs.Select(fcf=>new{cm,fcf}))
 .Select(x=>
 {
     SqlDataRecord rec = new SqlDataRecord(TestMetaData);

                    rec.Add(x.cm.Id,
                        x.fcf.Ex.Id,
                        x.fcf.Ex.Name,
                        x.fcf.Name = x.fcf.Name ?? string.Empty,
                        fcfm.IsActive, //хз что такое fcfm
                        x.fcf.PrependSR,
                        x.fcf.UseFirm,
                        x.fcf.Prefix,
                        x.fcf.Suffix
                        );
      return rec;
  })
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Вложенный loop в LINQ
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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