2016-07-25 3 views
-1

GameImageGameToneというデータ契約があります。私は2つのエンティティに参加しようとしており、画像/トーン関連に0〜11の間の一意のランダムな位置を割り当てます。私はテーブルに参加することができますが、LINQラムダ式でオブジェクトを作成するときに位置を割り当てる方法があるかどうかは不明です。新しいオブジェクトを選択するときにLINQを使用して割り当てる方法

  // Need random positions from 0-11 to to be associated to an image/tone 
      var positions = Enumerable.Range(0, 11).Shuffle().ToList(); 

      // Associate image/tones 
      imageToneData = game.GameImages.Shuffle() 
       .Join(game.GameTones, gi => gi.GameId, gt => gt.GameId, (gi, gt) => new ImageToneData 
       { 
        Image = new ImageData() 
        { 
         ImageFileName = gi.Image.ImageFileName, 
         ImageId = gi.ImageId 
        }, 
        Tone = new ToneData() 
        { 
         ToneFileName = gt.Tone.ToneFileName, 
         ToneId = gt.ToneId 
        }, 
        Position = // What goes here? 
       }); 

これらは私のデータコントラクト

[DataContract] 
public class ImageToneData 
{ 
    [DataMember] 
    public ImageData Image { get; set; } 

    [DataMember] 
    public ToneData Tone { get; set; } 

    [DataMember] 
    public int Position { get; set; } 
} 

[DataContract] 
public class ImageData 
{ 
    [DataMember] 
    public int ImageId { get; set; } 

    [DataMember] 
    public string ImageFileName { get; set; } 
} 

}

[DataContract] 
public class ToneData 
{ 
    [DataMember] 
    public int ToneId { get; set; } 

    [DataMember] 
    public string ToneFileName { get; set; } 
} 

答えて

0
var positions = Enumerable.Range(0, 11).OrderBy(a => Guid.NewGuid()).ToList(); 

    // Associate image/tones 
      imageToneData = game.GameImages.Shuffle() 
       .Join(game.GameTones, gi => gi.GameId, gt => gt.GameId, (gi, gt) => new ImageToneData 
       { 
        Image = new ImageData() 
        { 
         ImageFileName = gi.Image.ImageFileName, 
         ImageId = gi.ImageId 
        }, 
        Tone = new ToneData() 
        { 
         ToneFileName = gt.Tone.ToneFileName, 
         ToneId = gt.ToneId 
        }, 
        Position = positions.First() 
       }); 
です
関連する問題