如何从查询中筛选出列表中存在的数据?

时间:2014-04-04 15:09:44

标签: c# sql linq

我目前正在尝试通过两个参数过滤SQL查询,然后按日期字段对它们进行排序。除此之外,每个条目都有一个唯一的ID。我试图获取最新的行,如果返回一个不需要的匹配条件,则重新查询表中的下一个项目。但是,我必须排除先前发现的结果,该结果仅被该ID识别为唯一。

这就是我所拥有的:

List<string> prevChecked = new List<string>;

do{

    var query = (from someRow in context.aTable
                 where someRow.Param1.Equals(param1Arg) &&
                 someRow.Param2.Equals(param2Arg)
                 // Trying to Exclude any Unique in results that have a 
                 // matching uniqueID inside of prevChecked
                 orderby someRow.RecentDate descending
                 select someRow).FirstOrDefault();

    // Use result of query, to get result of anotherQuery, 
    // if null append the query.UniqueID to prevChecked 

}while (anotherQuery != null)

我尝试过使用

!someRow.UniqueID.Contains(prevChecked) 

并在一个网页上看到了一个“除外”功能,虽然这两个灵魂都不起作用。

1 个答案:

答案 0 :(得分:4)

您可以在where子句中添加条件,如:

!prevChecked.Contains(someRow.UniqueID)

所以你的查询是:

 var query = (from someRow in context.aTable
                 where someRow.Param1.Equals(param1Arg) &&
                 someRow.Param2.Equals(param2Arg) &&
                !prevChecked.Contains(someRow.UniqueID)
                 orderby someRow.RecentDate descending
                 select someRow).FirstorDefault();

您可能会看到:Creating IN Queries With LINQ