c# - 列值不能重复
问题描述
我正在尝试生成一个 Excel 文件并附加到邮件中。在那个excel文件中,我正在插入数据。我收到了 BDname 和电子邮件。这两个可能重复。我想显示这些重复的列值是单一的。
结果是这样的:
BDName|BDEmail|Process Id|Customer Name|Email
---------------------------------------------
siva |a@a.com|a1 |hari |h@h.com
---------------------------------------------
siva |a@a.com|a2 |hari |h@h.com
---------------------------------------------
siva |a@a.com|a3 |hari |h@h.com
---------------------------------------------
siva |a@a.com|a3 |hari |h@h.com
---------------------------------------------
siva |a@a.com|a3 |hari |h@h.com
---------------------------------------------
kumar |k@k.com|a4 |krishna |t@t.com
---------------------------------------------
kumar |k@k.com|a4 |krishna |t@t.com
---------------------------------------------
kumar |k@k.com|a5 |krishna |t@t.com
---------------------------------------------
kumar |k@k.com|a6 |krishna |t@t.com
---------------------------------------------
kumar |k@k.com|a7 |krishna |t@t.com
---------------------------------------------
kumar |k@k.com|a7 |krishna |t@t.com
---------------------------------------------
krishna|p@p.com|a3 |krishna |t@t.com
---------------------------------------------
raju |r@r.com|a3 |babu |b@b.com
---------------------------------------------
raju |r@r.com|a3 |babu |b@b.com
---------------------------------------------------
预期结果应该是:
BDName|BDEmail|Process Id|Customer Name|Email
---------------------------------------------
|a@a.com|a1 |hari |h@h.com
------------------------------------------
| |a2 |hari |h@h.com
------------------------------------------
siva | |a3 |hari |h@h.com
------------------------------------------
| |a3 |hari |h@h.com
------------------------------------------
| |a3 |hari |h@h.com
-----------------------------------------------
|k@k.com|a4 |krishna |t@t.com
------------------------------------------
| |a4 |krishna |t@t.com
------------------------------------------
kumar | |a5 |krishna |t@t.com
------------------------------------------
| |a6 |krishna |t@t.com
-------------------------------------------------
krishna|p@p.com|a3 |krishna |t@t.com
------------------------------------------------
raju |r@r.com|a3 |babu |b@b.com
------------------------------------------
| |a3 |babu |b@b.com
--------------------------------------------------
我的代码是:
StringBuilder str = new StringBuilder();
str.Append("<table border=" + "1px" + "b>");
str.Append("<thead>");
str.Append("<tr>");
str.Append("<td colspan='2' align='center'><b><font face=Arial Narrow size=2>BD Information </ font></b></td>");
str.Append("<td colspan='7' align='center'><b><font face=Arial Narrow size=2>Customer Information</ font></b></td>");
str.Append("</tr>");
str.Append("<tr>");
str.Append("<td align='center'><b><font face=Arial Narrow size=2>BD Name</ font></b></td>");
str.Append("<td align='center'><b><font face=Arial Narrow size=2>BD Email</ font></b></td>");
str.Append("<td align='center'><b><font face=Arial Narrow size=2> Process Id </ font></b></td>");
str.Append("<td align='center'><b><font face=Arial Narrow size=2>Customer Name</ font></b></td>");
str.Append("<td align='center'><b><font face=Arial Narrow size=2>Email</ font></b></td>");
str.Append("<td align='center'><b><font face=Arial Narrow size=2>Mobile No.</ font></b></td>");
str.Append("<td align='center'><b><font face=Arial Narrow size=2>Case Number</ font></b></td>");
str.Append("<td align='center'><b><font face=Arial Narrow size=2>Product Name</ font></b></td>");
str.Append("<td align='center'><b><font face=Arial Narrow size=2>Quantity</ font></b></td>");
str.Append("</thead>");
str.Append("</tr>");
var userids = db.Users.Where(x => x.RoleId == 1 || x.RoleId == 2|| x.RoleId == 3 || x.RoleId == 4|| x.RoleId == 5 || x.RoleId == 6).Select(x=>x).ToList();
foreach (var item1 in userids)
{
var BDName = item1.FullName;
var BDEmail = item1.Email;
var list = db.Purchases.Where(x => x.SubmittedBy == item1.Id).Select(x => x).ToList();
foreach (var item2 in list)
{
var CustomerName = db.Users.Where(x => x.Id == item2.UserId).Select(x => x.FullName).FirstOrDefault();
var CustomerEmail = db.Users.Where(x => x.Id == item2.UserId).Select(x => x.Email).FirstOrDefault();
var Mobile = db.Users.Where(x => x.Id == item2.UserId).Select(x => x.Mobile).FirstOrDefault();
var ProcessName = db.Services.Where(x => x.Id == item2.ServiceId).Select(x => x.ProductName).FirstOrDefault();
var Quantity = item2.Quantity;
var ProcessId = item2.ProcessId;
var CaseNo = db.ServiceRequests.Where(x => x.UserId == item2.UserId && x.ServiceId == item2.ServiceId).Select(x => x.SugarCRMCaseNumber).FirstOrDefault();
str.Append("<tr>");
str.Append("<td><font face=Arial Narrow size=" + "14px" + ">" + BDName+ " </font></td>");
str.Append("<td><a href="+""+"><font face=Arial Narrow size=" + "14px" + ">" + BDEmail + "</font></a></td>");
str.Append("<td><font face=Arial Narrow size=" + "14px" + "> "+ ProcessId + " </font></td>");
str.Append("<td><font face=Arial Narrow size=" + "14px" + "> " +CustomerName + " </font></td>");
str.Append("<td><a href=" + "" + "><font face=Arial Narrow size=" + "14px" + ">" + CustomerEmail + " </font></a></td>");
str.Append("<td><font face=Arial Narrow size=" + "14px" + "> " + Mobile + "</font></td>");
str.Append("<td><font face=Arial Narrow size=" + "14px" + "> "+ CaseNo + " </font></td>");
str.Append("<td><font face=Arial Narrow size=" + "14px" + ">" + ProcessName + "</font></td>");
str.Append("<td><font face=Arial Narrow size=" + "14px" + "> " + Quantity + " </font></td>");
str.Append("</tr>");
}
}
str.Append("</table>");
我想要这样的结果
这是我现在得到的结果:
当我应用 rowspan 时,结果如下:
解决方案
由于您正在遍历 userids(List),因此下一个即将到来的项目将始终与上面的用户相同。
您可以添加rowspan
以扩展到多行
foreach (var item1 in userids)
{
var BDName = item1.FullName;
var BDEmail = item1.Email;
var list = db.Purchases.Where(x => x.SubmittedBy == item1.Id).Select(x => x).ToList();
// check
if(list.Count > 0){
//use rowspan to extend to multiple rows.
str.Append("<td rowspan="+list.Count+"><font face=Arial Narrow size=14px>" + BDName+ " </font></td>");
str.Append("<td rowspan="+list.Count+"><a href="+""+"><font face=Arial Narrow size= 14px >"+ BDEmail + "</font></a></td>");
foreach (var item2 in list)
{
//the rest of the td
}
}
}
编辑 还使用单独的 css 文件来设置 td > Explanation的样式
推荐阅读
- c# - 在同一解决方案中部署多个项目
- android - 如何在cardview android studio中制作运行文本?
- javascript - 无论是哪种日期格式,如何使用 JavaScript 验证输入字段?
- html - 标题部分中的文本定位
- node.js - claudia 和 API-Gateway:禁止 (/latest)
- java - Apache Spark 错误使用 hadoop 将数据卸载到 AWS S3
- javascript - 在 iframe 中隐藏/伪造 src,在 DOM/inspected 元素中找不到
- laravel - 在日期时间选择器中显示数据库中的时间
- c - printf() 函数如何知道其参数的类型
- antlr - 使用 antlr v4 进行语法检查