c.DataTableRowsNotInList
Fri Oct 08 2021 19:47:48 GMT+0000 (Coordinated Universal Time)
using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Data.DataSetExtensions; public class Program { public static void Main() { var dictionary1 = new Dictionary<string, object>(); dictionary1.Add("Main Column", "test1"); var dictionary2 = new Dictionary<string, object>(); dictionary2.Add("Main Column", "test2"); List<QueueItem> queueItems = new List<QueueItem>() { new QueueItem("QueueName", dictionary1), new QueueItem("QueueName", dictionary2) }; string queueSpecificContentKey = "Main Column"; var dataTableColumnName = "Main Column"; var dataTableToCompare = new DataTable(); var dc = new DataColumn(dataTableColumnName); dataTableToCompare.Columns.Add(dc); DataRow dr = dataTableToCompare.NewRow(); dr[dataTableColumnName] = "test1"; dataTableToCompare.Rows.Add(dr); dr = dataTableToCompare.NewRow(); dr[dataTableColumnName] = "test3"; dataTableToCompare.Rows.Add(dr); dr = dataTableToCompare.NewRow(); dr[dataTableColumnName] = "test4"; dataTableToCompare.Rows.Add(dr); //var queueNames = queueItems.Select(s => String.Concat("'",s.QueueName,"'")).ToList(); //DataRow[] filtered = dataTableToCompare.Select(String.Format("[{0}] NOT IN ({1}) ",dataTableColumnName,String.Join(",", queueNames))); var filteredRows = from row in dataTableToCompare.AsEnumerable() join queueItem in queueItems on row.Field<string>(dataTableColumnName) equals queueItem.SpecificContent[queueSpecificContentKey] into rowLevelID from subrow in rowLevelID.DefaultIfEmpty() where subrow == null select row; foreach(DataRow r in filteredRows) { Console.WriteLine(r[dataTableColumnName].ToString()); } } } public class QueueItem{ public string QueueName{get;set;} public Dictionary<string, object> SpecificContent{get;set;} public QueueItem(string queueName, Dictionary<string, object> specificContent){ QueueName = queueName; SpecificContent = specificContent; } }
Comments