我有一个测试LINQ列表如下
List<test> test=new List<test>();
test.Add(new test("Bakery","bakery@store.com","Donut"));
test.Add(new test("Bakery","bakery@store.com","Bagel"));
test.Add(new test("Bakery","bakery@store.com","Cake"));
test.Add(new test("Produce","produce@store.com","Apple"));
test.Add(new test("Dairy","dairy@store.com","Milk"));
test.Add(new test("Dairy","dairy@store.com","Yogurt"));
某些部门有多个项目。如何循环列表并向每个部门/电子邮件地址发送1封包含项目的电子邮件。向www.example.com发送1bakery@store.com包含Donut、Bagel、Cake的电子邮件。向www.example.com发送1produce@store.com正文包含Apple的电子邮件。向www.example.com发送1dairy@store.com包含Milk、Yogurt的电子邮件
我不需要帮助的电子邮件部分,只是需要帮助循环通过列表,并获得每个部门的项目。非常感谢!!!
4条答案
按热度按时间ua4mk5z41#
我想,你可能会用分组来完成任务。
group
变数的每个执行严修都包含Key
属性和test
集合中群组项目的集合。因此,可以将
group
与Select
之类的方法或foreach
运算符一起使用。kzipqqlq2#
oknwwptz3#
如果要 * 分组 *(项目),让我们使用
GroupBy
(按Department
和Address
)。首先,让我们准备数据:然后我们就可以发送邮件了:
niknxzdl4#
您确定部门为
Bakery
的所有tests
都有相同的电子邮件地址吗?或者可能是(例如,由于键入错误)某些Bakeries有不同的电子邮件地址?如果所有Bakeries都有相同的地址,那么您可以使用Enumerable.GroupBy的重载之一来创建具有相同部门的测试组。然后,对于每个组,获取该组中第一个测试的电子邮件(或者任何其他测试,反正它们都是相同的)。使用带有参数
resultselector
的重载来指定您的结果换句话说:对于所有的测试,将属性
Department
的值相同的测试分组。每组中至少有一个测试。从每组中,取该组中所有测试将具有的Department
的公共值。此外,取该组中的测试,并选择EmailAddress
的值。仅对组中的第一个测试执行此操作。结果将是
[Department, Email]
的组合序列