Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[.NET] IEnumerable/yield na eerste rij

Pagina: 1
Acties:

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 19-10 08:18
Beste mensen,

Ik heb een lijstje met items die ik dmv een IEnumerable wil 'streamen' naar een andere lijst.
Echter wil ik buiten mijn x rijen aan data eerst een rij teruggeven als titelrij

Ik wil dus eigenlijk dit:

C#:
1
2
3
4
5
6
7
8
9
function IENumerable<AnderItem> doeShit(List<Harr> myList)
{
  yield return new AnderItem(); //de default constructor geeft titelrij terug

  foreach (var i in myList)
  {
    yield return new AnderItem(i);  // de specifieke constructor geeft datarij
  }
}


Maar dit gaat natuurljik niet goed.

Hoe pak ik zoiets aan?

This message was sent on 100% recyclable electrons.


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Wat gaat er niet goed dan? Ik zie niet zo snel wat er mis zou moeten zijn.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 19-10 08:18
Serieus?mm ik heb het niet eens geprobeerd :$

wist niet dat dit kon, maar ik ga het even testen

This message was sent on 100% recyclable electrons.


  • Daos
  • Registratie: Oktober 2004
  • Niet online
Afgezien van de "function" en hoofdletter fout in "IENumerable" werkt het gewoon:

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
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
using System;
using System.Collections.Generic;

namespace TestIEnumerable
{
    class AnderItem
    {
        private string data;

        public AnderItem()
        {
            data = "Title";
        }

        public AnderItem(Harr h)
        {
            data = h.ToString();
        }

        public override string ToString()
        {
            return data;
        }
    }

    class Harr
    {
        private string data;

        public Harr(string data)
        {
            this.data = data;
        }

        public override string ToString()
        {
            return data;
        }
    }

    class Program
    {
        public static IEnumerable<AnderItem> doeShit(List<Harr> myList) 
        { 
            yield return new AnderItem(); //de default constructor geeft titelrij terug 

            foreach (var i in myList) 
            { 
                yield return new AnderItem(i);  // de specifieke constructor geeft datarij 
            } 
        }

        static void Main(string[] args)
        {
            List<Harr> myList = new List<Harr>();
            myList.Add(new Harr("A"));
            myList.Add(new Harr("B"));
            myList.Add(new Harr("C"));
            myList.Add(new Harr("D"));

            foreach (var i in doeShit(myList))
            {
                Console.WriteLine(i);
            }

            Console.WriteLine("Press any key...");
            Console.ReadKey();
        }
    }
}

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 19-10 08:18
yup werkt als een zonnetje
weer wat performance winst :)

This message was sent on 100% recyclable electrons.


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Daos schreef op vrijdag 14 juni 2013 @ 15:15:
Afgezien van de "function" en hoofdletter fout in "IENumerable" werkt het gewoon:

C#:
1
*snip*
Dat had je ook wel wat korter kunnen bewijzen :Y)
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System;
using System.Collections.Generic;

class Program
{
    static void Main(string[] args)
    {
        foreach (var x in Foo())
            Console.WriteLine(x);
        Console.ReadKey();
    }

    static IEnumerable<object> Foo()
    {
        yield return DateTime.Now;
        yield return "Hello world";
        yield return 42;
    }
}


14-6-2013 16:30:17
Hello world
42

[ Voor 3% gewijzigd door RobIII op 14-06-2013 16:30 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Daos
  • Registratie: Oktober 2004
  • Niet online
RobIII schreef op vrijdag 14 juni 2013 @ 16:29:
Dat had je ook wel wat korter kunnen bewijzen :Y)
Ik wilde laten zien dat de functie uit de startpost werkt. Jij geeft een algemeen voorbeeld van yield.
Pagina: 1