Linq lambda   zodpovězená otázka

C#, LINQ

zdravim,

rad by som poziadal o pomoc.

Mam tabulku z ktorej potrebujem spravit vystup a neviem ako, viete mi niekto pomoct?

Tabulka:

col1	col2	col3
1	A11	A1
2	A11	A1
3	A13	A1
4	A13	A1
5	B12	B12
6	B12	B12
7	B12	B12
8	B12	B12
9	B13	B1
10	B13	B1
11	B14	B1
12	B14	B1
13	B14	B1
14	B13	B1
15	B13	B1
16	B13	B1

Vystup ktory potrebujem:
A	B	C	D	                        E
1	4	A1	A11 - 2, A13 - 2 	        4
5	8	B12	B12 - 4	                        4
9	16	B1	B12 - 2, B14 - 3, B13 -3	8

public class sample
{
  public int col1 {get; set;}
  public string col2 {get; set;}
  public string col3 {get; set;}
} 
List<sample> sampleData = new List<sample>() {
        new sample {col1 =1, col2 ="A11", col3="A1"}, 
        new sample {col1 =2, col2 ="A11", col3="A1"}, 
        new sample {col1 =3, col2 ="A13", col3="A1"}, 
        new sample {col1 =4, col2 ="A13", col3="A1"},
        new sample {col1 =5, col2 ="B12", col3="B12"}, 
        new sample {col1 =6, col2 ="B12", col3="B12"}, 
        new sample {col1 =7, col2 ="B12", col3="B12"},
        new sample {col1 =8, col2 ="B12", col3="B12"}, 
        new sample {col1 =9, col2 ="B13", col3="B1"},
        new sample {col1 =10, col2 ="B13", col3="B1"}, 
        new sample {col1 =11, col2 ="B14", col3="B1"}, 
        new sample {col1 =12, col2 ="B14", col3="B1"}, 
        new sample {col1 =13, col2 ="B14", col3="B1"}, 
        new sample {col1 =14, col2 ="B13", col3="B1"}, 
        new sample {col1 =15, col2 ="B13", col3="B1"}, 
        new sample {col1 =16, col2 ="B13", col3="B1"}
        };

var groupLineToImport = sampleData.AsEnumerable()
                        .GroupBy(
                        g => new
                        {
                            SortTo = g.col3

                        })
                        .Select(r => new
                        {
                            MinPor = r.Min(t => t.col1),
                            MaxPor = r.Max(t => t.col1),
                            GroupCode = r.Key,
                            Pocet = r.Count(),
                        });
groupLineToImport.ToList().ForEach(p=> Console.WriteLine(p));

Vystup co viem spravit je pre stlpec A,B,C a E:

{ MinPor = 1, MaxPor = 4, GroupCode = { SortTo = A1 }, Pocet = 4 }
{ MinPor = 5, MaxPor = 8, GroupCode = { SortTo = B12 }, Pocet = 4 }
{ MinPor = 9, MaxPor = 16, GroupCode = { SortTo = B1 }, Pocet = 8 }

potrebujem ale dosiahnuit este aj pre stlpec D:

{ MinPor = 1, MaxPor = 4, GroupCode = { SortTo = A1 },List = {A11 - 2, A13 - 2}, Pocet = 4 }
{ MinPor = 5, MaxPor = 8, GroupCode = { SortTo = B12 }, List = {B12 - 4}, Pocet = 4 }
{ MinPor = 9, MaxPor = 16, GroupCode = { SortTo = B1 }, List = {B12 - 2, B14 - 3, B13 - 3}, Pocet = 8 }

Vieste mi niekto poradit ako?

Dakujem za navrhy ....

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Co třeba takto:

private static IList<string> GetList(IEnumerable<string> source)
{
    var list = (from s in source
		group s by s into g
		select string.Format("{0} - {1}", g.Key, g.Count())).ToList();

    return list;
}

a do selektoru .Select(r => new přidat:

List = GetList(r.Select(t => t.col2)),
nahlásit spamnahlásit spam 0 odpovědětodpovědět

dakujem strasne mi to pomohlo :o)

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback