Можно ли иметь анонимный метод при создании списка элементов с помощью .NET + Linq? - PullRequest
3 голосов
/ 30 июня 2011

Я пытаюсь сделать следующее, но не знаю, как ...

var foo = new Foo
    {
        Id = MyRandom<int>(1, 100),
        Name = MyRandom<string>(5,20),
        MyPets = MyRandom<bool>() ?
            new IList<Pet>
            (petList =>
                { 
                   var x = MyRandom<int>(1, 4);
                   for (int i = 0; i < x; i++)
                   {
                       petList.Add(new Pet(MyRandom<string>(1,15));
                   }
                }
            : null
    };

так .. это создает случайный список домашних животных.

Есть идеи?

Ответы [ 2 ]

3 голосов
/ 30 июня 2011

Нет.

Вместо этого вы можете создать лямбда-выражение, а затем немедленно вызвать его:

MyRandom<bool>() ? null : (new Func<IList<Pet>>(() => { return ... })()
2 голосов
/ 30 июня 2011

Вы пробовали что-то подобное?

var foo = new Foo
    {
        Id = MyRandom<int>(1, 100),
        Name = MyRandom<string>(5,20),
        MyPets = MyRandom<bool>() ?
            Enumerable.Range(0, MyRandom<int>(1, 4))
                .Select(_ => new Pet(MyRandom<string>(1,15)))
                .ToList()
            : null
    };
...