【发布时间】:2012-01-16 14:39:44
【问题描述】:
我正在尝试搜索一个项目表,有一个id,name和oldId(可以为null)
更新项目时,会使用新数据创建新行,并将项目的旧 id 设置为新行 OldId 字段。
但我不知道如何显示该项目的最新版本以及在搜索期间未编辑的那些。
var q = from i in Items where i.Name.Contains(x) select i;
想法?
【问题讨论】:
我正在尝试搜索一个项目表,有一个id,name和oldId(可以为null)
更新项目时,会使用新数据创建新行,并将项目的旧 id 设置为新行 OldId 字段。
但我不知道如何显示该项目的最新版本以及在搜索期间未编辑的那些。
var q = from i in Items where i.Name.Contains(x) select i;
想法?
【问题讨论】:
如果我正确理解了您的问题,则在 OldId 列的任何其他行中未使用 ID 的每一行都是其项目的最新版本。
这将导致以下结果:
var latestRevisions = Items.Where(x => !Items.Any(y => y.OldId == x.Id));
在 SQL 中,我会这样写:
SELECT
i.*
FROM
items i
LEFT OUTER JOIN items i2
ON i.item_id = i2.old_item_id
WHERE
i2.item_id IS NULL
;
【讨论】: