【发布时间】:2011-01-03 07:05:11
【问题描述】:
我正在处理列表中的列表。这就是我目前的搜索方式:
var tags = from fd in BigList
from tag in fd.Tags
where tag.Id == selectedTag.Id ||
tag.Id == ID.TIMESTAMP
select new { fd.Name, tag.Id, tag.Value };
然后我遍历结果集并记住 Timestamp 何时弹出下一个条目,不用说这很草率,我很肯定有更好的方法使用 Linq,我似乎找不到语法.
这是一些示例输出(Id 表示其中存储了什么类型的数据,例如时间戳):
Name | Id | Value
-----|----|----------
0000 | 1 | <timestamp>
0000 | 2 | 1.2
...
9999 | 1 | <timestamp>
9999 | 2 | 6.3
我需要Id = selectedTag.Id 的所有实例。我只想要一个包含Name、Id、Value 和Timestamp 的列表,但问题是我的上述尝试为每个项目返回 2 个条目(1 个用于时间戳,1 个用于值)。有没有办法使用 Linq 做到这一点?最好使用查询语法! :)
【问题讨论】:
-
它返回一个列表,其中每个项目有 2 个条目(1 个用于时间戳,1 个用于我正在查找的值)所以除非我遗漏了一些明显的东西,否则仍有相当多的腿-努力检索每个条目的时间戳。
-
你只需要两次
from tag in fd.Tags——一次是where tag.Id == selectedTag.Id,一次是where tag.Id == ID.TIMESTAMP。 -
@Gabe:我相信我也已经尝试过了(通过 2 个单独的查询)?但是然后呢?同时迭代两者?连接它们?
-
当您有两个匹配项时,您希望在您的值列中包含什么?