2013-08-21 56 views
4

我正在嘗試使用LINQ.JS(而不是.Net LINQ!)並且無法獲取comparerSelector概念。LINQ.JS,比較器選擇器除

我有對象的兩個數組,每個對象包含ID,姓名,日期,護照等

我想通過以下2個字段有它們之間的區別:ID,姓名。日期和護照的差異應該被忽略。如何編寫comparerSelector?

下只能用於編號:

Enumerable.From(p2) 
    .Except(p1, "$.Id}") 
    .ForEach(function (x) { alert('Id == ' + x.Id); }); 

這工作太:

Enumerable.From(p2) 
    .Except(p1, function(x) { return x.Id; }) 
    .ForEach(function (x) { alert('id == ' + x.Id); }); 

如何名稱字段添加到比較器?

下面的代碼不起作用:

Enumerable.From(p2) 
    .Except(p1, function(x) { return { Id : x.Id, Name : x.Name }; }) 
    .ForEach(function (x) { alert('Id == ' + x.Id); }); 

問候,

回答

5

與在LINQ.js所有的比較,你應該返回一個字符串或具有DISTICT字符串表示其他對象。

就個人而言,我會專門返回字符串:

var query = Enumerable.From(p2) 
    .Except(p1, "[$.Id, $.Name].join(':')") 
    .ToArray(); 
+0

我已經有類似的技巧做到了這一點:函數(X){返回x.Id + 「_」 + x.Name; } – noober