首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >linq.js意外结果

linq.js意外结果
EN

Stack Overflow用户
提问于 2017-01-18 14:22:47
回答 1查看 144关注 0票数 1

好的,我有一个JSON对象叫做“故障”

代码语言:javascript
复制
"Faults":[{"RoomId":1,"ElementId":173,"FaultTypeId":1,"Count":1,"Remark":""},{"RoomId":3,"ElementId":211,"FaultTypeId":7,"Count":1,"Remark":""},{"RoomId":4,"ElementId":173,"FaultTypeId":1,"Count":1,"Remark":""}]

在调试器中显示的故障对象:

现在我需要通过使用he RoomId来检查房间是否有故障。我使用的代码是:

代码语言:javascript
复制
    Enumerable.From(audit.Rooms).ForEach(function(room, index) {//√
    var containsFaults = '';

    //room.Id is ALWAYS filled, it can't be null
    var test1 = faults.Select("$.RoomId==" + room.Id).Count();
    var test2 = faults.Select("$.RoomId==" + room.Id);

    if (faults.Select("$.RoomId==" + room.Id).Count() > 0) {
        containsFaults = '√';
    }

但当我执行这段代码时,我得到以下结果.

为什么不直接用匹配的RoomId返回我的对象的错误呢?我肯定身份证是吻合的。我在这里做错了什么,我真的被困在这里了.

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-18 14:38:53

回答这个问题

为什么不直接用匹配的RoomId返回我的对象的错误呢?我肯定身份证是吻合的。我在这里做错了什么,我真的被困在这里了.

您需要添加.ToArray()来呈现结果。

代码语言:javascript
复制
var test2 = faults.Select("$.RoomId==" + room.Id).ToArray();
//                                               ^^^^^^^^^^

代码语言:javascript
复制
var audit = { Faults: [{ RoomId: 42, ElementId: 4711, FaultTypeId: 0, Count: 0, Remark: "no fault" }, { RoomId: 1, ElementId: 173, FaultTypeId: 1, Count: 1, Remark: "" }, { RoomId: 3, ElementId: 211, FaultTypeId: 7, Count: 1, Remark: "" }, { RoomId: 4, ElementId: 173, FaultTypeId: 1, Count: 1, Remark: "" }] },
    roomId = 4,
    dataset = Enumerable.From(audit.Faults),
    test1 = dataset.Where("$.Count > 0 && $.RoomId==" + roomId).Count();
    test2 = dataset.Where("$.Count > 0 && $.RoomId==" + roomId).ToArray();

console.log(test1);
console.log(test2);
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/linq.js/2.2.0.2/linq.js"></script>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41721889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档