1

我有两个反序列化 json 数据列表,我想交叉连接这些表。示例数据是两个列表的 item1:name, item2:date。我的返回类型为 List,但我的返回类型无效。不知道我在这里做错了什么。

到目前为止我所拥有的:

 List<JsonData> jdOne = GetDeserializedData(jsonUrlOne);
 List<JsonData> jdTwo = GetDeserializedData(jsonUrlTwo);

 var query = from urlOne in jdOne
                    from urlTwo in jdTwo
                    select new { urlOne, urlTwo };

 return query;
4

3 回答 3

4

您可能想使用元组来执行此操作....

public List<Tuple<JsonData,JsonData>> myFunc() {
  List<JsonData> jdOne = GetDeserializedData(jsonUrlOne);   
  List<JsonData> jdTwo = GetDeserializedData(jsonUrlTwo);   

  var query = from urlOne in jdOne   
                from urlTwo in jdTwo   
                select Tuple.Create(urlOne, urlTwo);   

  return query.ToList();
}

然后根据您的结果,您可以像这样访问这两个项目。

var results=myFunc();
var x1=results[0].Item1;
var x2=results[0].Item2;

x1包含来自第一个列表结果的第一对,x2包含第二对。

于 2012-08-20T15:04:31.260 回答
1

看起来您试图从函数返回匿名类型。声明类型以保存两个值,并返回它

select new YourType(){Field1 = urlOne, Field2 = urlTwo}
于 2012-08-20T14:58:38.880 回答
1

这是您使用 Linq 想要的吗:Zip

var result = jdOne.Zip(jdTwo, (urlOne, urlTwo) => new {urlOne, urlTwo});
于 2012-08-20T15:18:55.580 回答