2015-10-25 126 views
-2

我有数据表列“数据表中的数据表”ABC/Vesse/11371503/C报告“行2 [主题]列中的列”主题“,行1 [主题]/BEY/11371503/A报告“我需要比较基于/的主题栏内的值,如果/之前的值相同,我应该在下一个斜杠和排序前查找下一个值。”阵列比较和排序列表c#

如上所述,根据/ strSubSplit分割。比较之后,请帮助如何排序并添加到列表中。非常感谢。

if (ds.Tables[0].Rows.Count > 0) 
{ 
    foreach (DataRow row in ds.Tables[0].Rows) 
    { 
     string strSubject = row["Subject"].ToString(); 
     string strEmailFrom = row["EmailFrom"].ToString(); 
     string strEmailTo = row["EmailTo"].ToString(); 
     string strEmailCC = row["EmailCc"].ToString(); 
     string strEmailContent = row["EmailContent"].ToString(); 

     // Do proper error handling here 
     DateTime strCreatedOn = DateTime.Parse(row["CreatedOn"].ToString()); 
     string[] strSubSplit= row["Subject"].ToString().Split(new[] {'/'},StringSplitOptions.RemoveEmptyEntries); 
     mailInfoList.Add(new Tuple<string, string, string, string, string, DateTime>(strSubject, strEmailFrom, strEmailTo, strEmailCC, strEmailContent, strCreatedOn)); 

     var newList = mailInfoList.OrderBy(x => x.Item1).ThenBy(x => x.Item6).ToList(); 
    } 
} 
+3

请清楚描述你的要求:) –

+0

意思是“ABC/Vesse/11371503/C re端口“是一个列值? –

+0

您的意思是“ABC/Vesse/11371503/C报告”是否按照“11371503/ABC/C report/Vesse”的排序顺序排列? –

回答

0

试试这个:

// assuming you'll already have the subjects of the emails 
var subjects = new List<string> 
{ 
    "ABC/Vesse/11371503 /C report", 
    "Value/BEY/11371503/A report" 
}; 

var listOfItems = new List<Tuple<string, string, int, string>>(); 
subjects.ForEach(s => 
{ 
    var splits = s.Split(new[] {'/'}, StringSplitOptions.RemoveEmptyEntries).Select(x => x.Trim()).ToArray(); 

    // Do proper error checking before the int.Parse and make sure every array has 4 elements 
    listOfItems.Add(
     new Tuple<string, string, int, string>(splits[0], 
               splits[1], 
               int.Parse(splits[2]), 
               splits[3])); 
}); 

var newList = listOfItems 
    .OrderBy(x => x.Item3) // the number 
    .ThenBy(x => x.Item4) // {x} report 
    .ToList(); 
+0

这将帮助我..感谢很多..将尽力 – Priya

+0

很高兴我可以帮助:) – Nasreddine

+0

由于ur代码,排序的主题被添加到newList .how can i将排序列表添加到现有列表中以获取所有值。感谢您的所有帮助。 – Priya

0

第一行包含ABC/Vesse/11371503 /C report 和第二个包含Value /BEY /11371503 /A report

尝试,

string strSubject = string.Join("/",row["Subject"] 
            .ToString() 
            .Split(new[] { '/' }, 
            StringSplitOptions.RemoveEmptyEntries 
           ).ToList().OrderBy(x => x)); 

现在更新的值是包含

行1 11371503 /ABC /C report/Vesse 行2 11371503 /A report/BEY /Value

并重新排序基于主题的newList变量,

var newList = mailInfoList.OrderBy(x => x.Item1).ThenBy(x => x.Item6).ToList(); 

这给你的最终结果变得

行1 11371503 /A report/BEY /Value 行2 11371503 /ABC /C report/Vesse