【问题标题】:Joining a HashSet into a LINQ to SQL query将 HashSet 加入 LINQ to SQL 查询
【发布时间】:2012-05-29 08:26:07
【问题描述】:

我有一个 HashSet,其中包含一个列表 int int ids 用于必须选择的项目。

HashSet<int> SelectedItems = new HashSet<int>()

完整的项目列表由 LINQ to SQL 语句加载。 我将填充以下内容的 ObservableCollection:

public class DataItem
{
    public int Id { get; private set; }
    public name String { get; private set; }
    public bool IsSelected { get; set; }
}

如果Id在HashSet中,则IsSelected属性必须设置为true,否则必须设置为false;

这是我的 LINQ 查询:

var items =
    from c in itemsContext.DataItems
    where (c.Latest == true)
    select c;

如何将 HashSet 加入到上述查询中以达到我想要的结果?

谢谢

PS:对不起,我不知道为什么代码块的格式不正确。

【问题讨论】:

    标签: c# sql linq join hashset


    【解决方案1】:

    如果我正确理解了您的问题,即数据项对应于内存中的选定项... 然后使用包含...

    from dataItem in context.DataItems
    where dataItem.Latest && SelectedItems.Contains(dataItem.Id)
    select dataItem;
    

    【讨论】:

    • 几乎是我所需要的,请参阅下面的内容。
    【解决方案2】:

    这是我想出的解决方案:

    from dataItem in context.DataItems
    where dataItem.Latest
    select new {dataItem.Id,dataItem.Name,IsSelected=SelectedItems.Contains(dataItem.Id)};
    

    感谢您为我指明正确的方向。

    【讨论】:

    • 这将枚举数据库中数据项的整个数据集,我的理解是过滤数据库上的数据项..干杯
    • 数据集将根据设置的最新字段进行过滤。 HashSet 成员资格是结果集而不是过滤器的要求。如果我不够清楚,请道歉。
    猜你喜欢
    • 1970-01-01
    • 2010-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-06
    • 2020-08-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多