2011-06-30 32 views
3

我試圖做到以下幾點,但不知道如何...使用.NET + Linq創建項目列表時,是否可以使用匿名方法?

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 
    }; 

所以..這將創建寵物隨機列出。

任何想法?

+0

你錯過了')' – harryovers

+1

其實還有2人失蹤 – harryovers

+0

是的,這只是pseduo代碼...得到跨越點.. –

回答

3

相反,你可以創建一個lambda表達式,然後立即調用它:

MyRandom<bool>() ? null : (new Func<IList<Pet>>(() => { return ... })() 
+0

@SLaks - 我如何返回一個新的列表與隨機添加的項目,雖然? –

+0

@Pure:將您的代碼放入lambda表達式中。 – SLaks

+0

@Slaks - 是啊:)這就是我嘗試..但我需要做什麼來添加一個項目到寵物列表?即。什麼是petlist變量? –

2

您是否嘗試過這樣的事情?

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 
    }; 
相關問題