C# LINQ - 过滤查询

标签 c# linq

我对 LINQ 非常陌生,我正在寻找一些有关开展我的项目的最佳路线的指导。

我正在开发一个通过电子邮件或短信发送通知消息的应用程序。

目前,我的 SQL 数据库中有 3 个表,是我在 C# 中获取的:-

        var contacts = db.GetTable<Contact>();
        var distributionLists = db.GetTable<DistributionList>();
        var JunctionTable = db.GetTable<ContactsDistribution>();

用户可以从列表框控件中选择多个通讯组列表。我需要找到一种将记录添加到每个选定项目的列表/对象的方法。获得最终数据后,我需要删除所有重复项,因为联系人可以属于多个通讯组列表。

最后,列表中的每个联系人应该只有 1 个条目,因为我不想多次向 1 个联系人发送相同的通知。

我的 LINQ 查询如下:-

foreach (var li in listBox1.SelectedItems)
        {
            string text = "";
            text += li.ToString();


            var InitialList = (from j in JunctionTable
                  where j.DistributionName.Equals(text)
                  join c in contacts
                  on j.ContactID equals c.ContactID
                  select new { c.ContactID,  j.DistributionName }).ToList();

        }

我需要为列表框中的每个选定项目不断添加到此查询。我确实尝试过使用 List 对象,但我不确定这是执行此操作的正确方法。

一旦我拥有了所有条目..我就可以删除重复项,但不确定我是否走在正确的道路上?

有更好的方法吗?

最佳答案

我不太明白你想做什么,但这可能对你有一点帮助:

var listBoxItems = listBox1.SelectedItems.Select(x => x.ToString());

或者:

var listBoxItems = from li in listBox1.SelectedItems
                   select new { x.ToString() };

var InitialList = (from j in JunctionTable
                   where listBoxItems.Contains(j.DistributionName)
                   join c in contacts on j.ContactID equals c.ContactID
                   select new { c.ContactID,  j.DistributionName }).ToList();

如果您需要从 InitialList 中删除重复项,您可以使用 Distinct方法:

var InitialList = (from j in JunctionTable
                   where listBoxItems.Contains(j.DistributionName)
                   join c in contacts on j.ContactID equals c.ContactID
                   select new { c.ContactID,  j.DistributionName }).Distinct().ToList();

关于C# LINQ - 过滤查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11722304/

相关文章:

c# - Entity Framework linq 包含和分组

c# - 使用三个查询从两个数据表中选择唯一 ID 并合并

c# - 如何将编译器检查的属性名称/表达式树传递给自定义属性

c# - 正则表达式 XAML 问题

c# - 我怎样才能让 linq 查询有条件地不应用 where 子句

c# - 使用 LINQ C# 检查是否存在具有特定属性的任何 XML 节点

c# - 使用函数在天蓝色表存储中使用多个查询参数

c# - 在 C# 中,如何在编译时不知道类型的情况下访问用户定义类型的静态属性?

c# - 使用 ksoap 协议(protocol)不匹配的 Soap web 服务和 android 客户端

c# - 获取 DateTime.Now 和某个 DateTime 之间的总天数 (int)