2016-10-05 2 views
0

linq.js expresionの値を割り当てようとしています。 LINQのラムダのexpresionは次のようになります:linqからlinq.jsへの値代入

List<SearchSpaceRoom> roomsAvailable = Spaces.Select(s => 
    { 
     s.Available = s.Rooms.Where(r => r.RoomTypeRanges.Any(t => t.Type.ToString() == "Theatre" && t.Min <= 101 && t.Max >= 200)).Count(); 
     return s; 
    }) 
    .ToList(); 

しかし、私はlinq.js.で動作するようにこれを行うための方法を見つけることができません考え方は次のようなものです:

var data = eval($('#SpaceJson').val()); 
var results = $.Enumerable.From(data).ToArray(); 
var layout = 'Theatre'; 
var minDelegates = '101'; 
var maxDelegates = '200'; 

results = $.Enumerable.From(results) 
    .Select('{$.Available = $.Rooms.Where($.RoomTypeRanges.Any($.Type == \'' + layout + '\' && $.Min <= \'' + parseInt(minDelegates) + '\' && t.Max >= \'' + parseInt(maxDelegates) + '\')).Count(); return $; }').ToArray(); 

誰も私にこれを行うための最善のアプローチを提案することができますか?

式の詳細については、 が必要な場合は、スペースごとに特定のレイアウト(Classroom、Theatre)のMinおよびMaxの要件を満たす部屋の数を割り当てます。 基本的な構造は同様である:

  1. 一つのスペースは部屋
  2. ワンルームは
  3. レイアウトは最大最小人々
  4. が含まれているさまざまなレイアウトが含まれている含まれてい

私はすべてのデータ構造を提供することができますあなたが必要な場合は、私はそれが助け以上に混乱すると信じています。

ありがとうございます!

編集:私はちょうどこれを閉鎖する

public class SearchSpaceViewModel 
{ 
    public List<SearchSpaceRoom> Spaces { get; set; } 
    public string RoomsJson { get; set; } 
} 

public class SearchSpaceRoom 
{ 
    public List<RoomItem> Rooms { get; set; } 
    public int Available { get; set; } 
    . 
    . 
    . 
} 

public class RoomItem 
{ 
    public List<RoomTypeRange> RoomTypeRanges { get; set; } 
    . 
    . 
    . 

} 

public class RoomTypeRange 
{ 
    public string Type { get; set; } 
    public int Max { get; set; } 
    public int Min { get; set; } 
} 

答えて

0

ここにクラスを追加し、私はjQueryとlinq.jsのミックスを使用してそれを行うために管理:

function ParseJson() { 
     var data = eval($('#RoomsJson').val()); 
     var results = $.Enumerable.From(data).ToArray(); 
     var layout = 'Theatre'; 
     var intMin = 101; 
     var intMax = 200; 

     $.each(results, function (i, space) { 
      var count = 0; 
      $.each(space.Rooms, function (j, room) { 
       if ($.Enumerable.From(room.RoomTypeRanges).Any('$.Type == \'' + layout + '\' && $.Min <= ' + intMin + ' && $.Max >= ' + intMax)) { 
        count++; 
       } 
      }); 
      space.Available = count; 
     }); 

     return results; 
    } 

私は必ずそこにいることですより洗練されたソリューションですが、正常に動作するようです。

関連する問題