首页 > 解决方案 > 列值不能重复

问题描述

我正在尝试生成一个 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 时,结果如下:

在此处输入图像描述

标签: c#asp.netlinq

解决方案


由于您正在遍历 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的样式


推荐阅读