2

私のjavascriptファイルでは、ステートメントのようなlinqクエリを使用して結果を表示したいと思います。以下は、私のビューモデルと、情報を取得する方法に関する情報です。

var viewModel = {
    RosterRoleTypes: ko.observableArray([])
};

// the ViewModel for the array of RoleTypes
var roleTypesViewModel = function (data) {
    roleTypesViewModel.AddRoles(data);
}

// Adds multiple roles to the array of RoleTypes
roleTypesViewModel.AddRoles = function (data) {
    $.each(data, function (index, value) {
        roleTypesViewModel.PushRole(value);
    });
};

//Add a single role to the array of Roles
roleTypesViewModel.PushRole = function (role) {
    viewModel.RosterRoleTypes.push(new roleViewModel(role));
}

// the ViewModel for a single Role
var roleViewModel = function (data) {
    var _self = this;
    _self.ContentRole = ko.observable(data.ContentRole);
    _self.RoleName = ko.observable(data.RoleName);
    _self.RoleRank = ko.observable(data.RoleRank);
    _self.UserCount = ko.observable(data.UserCount);
};

OnSuccessのgetメソッドでは、次のようなことをしたいと思います:

var results = Enumerable.From(viewModel)
    .ForEach(RoleTypes){ show RoleName and UserCount}

Enumerable.From... を使用してそのステートメントを適切に記述するにはどうすればよいですか?

4

2 に答える 2

1

LINQ.js を試してみたことがありますか?まさにあなたが探しているもののように思えます。ここで見つけることができます: http://linqjs.codeplex.com/

彼らのサイトからのいくつかの例を次に示します。

// C# LINQ (delegate)
Enumerable.Range(1, 10)
    .Where(delegate(int i) { return i % 3 == 0; })
    .Select(delegate(int i) { return i * 10; });
// linq.js - anonymous function
Enumerable.Range(1, 10)
    .Where(function(i) { return i % 3 == 0; })
    .Select(function(i) { return i * 10; });
// C# LINQ (lambda)
Enumerable.Range(1, 10).Where(i => i % 3 == 0).Select(i => i * 10);
// linq.js - lambda expression
Enumerable.Range(1, 10).Where("i => i % 3 == 0").Select("i => i * 10");
// $ is default iterator variable like Scala's "_" or Groovy's "it"
Enumerable.Range(1, 10).Where("$ % 3 == 0").Select("$ * 10");
 // "" is shorthand of "x => x" (identity function)
Enumerable.Range(4, 7).Join(Enumerable.Range(8, 5), "", "", "outer,inner=>outer*inner");

// Enumerable.From is wrap from primitive array, string(to charArray), object(to KeyValuePair[]) etc..
var array = [100, 200, 30, 40, 500, 40, 200];
var ex1 = Enumerable.From(array).Distinct().ToArray(); // [100, 200, 30, 40, 500]
var ex2 = Enumerable.From("foobar").ToArray(); // ["f", "o", "o", "b", "a", "r"];
var ex3 = Enumerable.From({foo:10, bar:20}).ToArray(); // [{Key:"foo",Value:10}, {Key:"bar",Value:20}]

// C# - AnonymousType
array.Select((val, i) => new { Value = val, Index = i });
// linq.js - object literal
Enumerable.From(array).Select("val,i=>{Value:val, Index:i}")
于 2013-10-04T21:19:40.887 に答える