如何使用linq.js查询/查找JSON数组中的单个元素

时间:2014-08-04 06:22:50

标签: jquery json linq.js

我有一个JSON数组(javascript)。我使用linq.js来过滤/查询数组并找到单个元素/第一个元素。什么是正确的语法?

我的数据:

[{
    "Fname": "Chinmaya",
    "Lname": "Bhatta",
    "DOB": "/Date(328645800000)/",
    "PassportNumber": "",
    "Expirydate": "/Date(315513000000)/",
    "Mobilenum": "91-9740814702",
    "EmailID": "santu.yyyyy@yahoo.com",
    "IssueCountry": ""
},
    ...
]

我的代码:

var tbl =  $(this).closest('table');

var fname= $(tbl).find('[id*=txtFirstName]').val();

var lname= $(tbl).find('[id*=txtLastName]').val();

var filtered = Enumerable.From(fulllist)
                         .Select("$.Fname + ':'+ $.fname+")
                         .ToArray();

但这是投掷错误。有人可以告诉我基于Fname& amp;查询的正确语法是什么L-NAME? BTW fulllist是我的阵列的名字。

提前致谢。

1 个答案:

答案 0 :(得分:2)

jsFiddle

就像使用SQL查询一样,您必须指定'其中'用于过滤整个数据集的结果的子句:

var filtered = Enumerable
            .From(data)
            .Where("$.Fname == '" + fname + "' && $.Lname == '" + lname + "'")
            .Select("$.Fname + ':' + $.Lname + ':' + $.DOB")
            .ToArray();

您还可以使用接受回调函数的Where语法的显式形式:

Where(function (x) { return x.Fname == fname && x.Lname == lname });

修改

要将过滤结果集设为JS对象数组,请移除对SelectjsFiddle 2)的调用:

var filtered = Enumerable
               .From(data)
               .Where("$.Fname == '" + fname + "' && $.Lname == '" + lname + "'")
               .ToArray();