List & Array (edit)
Algorithms
Intersection of Two Unsorted Arrays
http://www.codinghelmet.com/exercises/array-intersection
http://www.codinghelmet.com/exercises/counting-intersection-of-two-unsorted-arrays
References
Intersection of two arrays in C#
https://stackoverflow.com/questions/20687338/intersection-of-two-int-array-in-c-sharp
https://stackoverflow.com/questions/10866756/fast-intersection-of-two-sorted-integer-arrays
Merge two array
https://stackoverflow.com/questions/59217/merging-two-arrays-in-net?rq=1
Sort dictionary
https://stackoverflow.com/questions/289/how-do-you-sort-a-dictionary-by-value?rq=1
Pass an array of integers to ASP.NET Web API
https://stackoverflow.com/questions/9981330/pass-an-array-of-integers-to-asp-net-web-api?rq=1
EF Core 2.1 select/distinct
var resulat = from a in A join b in B equals a.level=b.level where ... select new M1 {AId = a.id}; (from r in resulat join c in C equals r.AId = c.AId select new M2 { CId = c.Id level = c.level }).Distinct();
https://stackoverflow.com/questions/54061471/ef-core-2-1-select-distinct
EF Core 2.1
Distinct
List<int> ages = new List<int> { 21, 46, 46, 55, 17, 21, 55, 55 };
IEnumerable<int> distinctAges = ages.AsQueryable().Distinct();
Console.WriteLine("Distinct ages:");
foreach (int age in distinctAges)
Console.WriteLine(age);
/* This code produces the following output: Distinct ages: 21 46 55 17 */
GroupBy Example
var directors = new[] { new { DirectorName = "Director A", DirectorID = 1 }, new { DirectorName = "Director B", DirectorID = 2 }}; var movies = new[] { new { MovieName = "Movie A", MovieID = 1, DirectorID = 1 }, new { MovieName = "Movie B", MovieID = 2, DirectorID = 2 }}; var actors = new[] { new { ActorName = "Actor A", ActorID = 1, MovieID = 1}, new { ActorName = "Actor B", ActorID = 2, MovieID = 1}, new { ActorName = "Actor C", ActorID = 3, MovieID = 1}, new { ActorName = "Actor D", ActorID = 4, MovieID = 2}}; var results = from d in directors from m in movies .Where(m => m.DirectorID == d.DirectorID) from a in actors .Where(a => a.MovieID == m.MovieID) where d.DirectorID == 1 group new { d, m, a } by d.DirectorName into grp select new { DirectorName = grp.Key, MovieCount = grp.Select(x => x.m).Distinct().Count(), ActorCount = grp.Select(x => x.a).Distinct().Count() };
GroupBy
return query .GroupBy(e => new // Key { e.DivisionCode, e.DivisionDescription, e.TopDivisionCode, e.TopDivisionDescription, e.PostingDate }, e => new // Element { e.LineAmount, RUCAmount = e.LineAmount - (e.Quantity * e.UnitCostLcy) // <-- }) .Select(g => new V_TurnoverByDivision { DivisionCode = g.Key.DivisionCode, DivisionDescription = g.Key.DivisionDescription, TopDivisionCode = g.Key.TopDivisionCode, TopDivisionDescription = g.Key.TopDivisionDescription, PostingDate = g.Key.PostingDate, LineAmount = g.Sum(e => e.LineAmount), RUCAmount = g.Sum(e => e.RUCAmount) // <-- });
Entity Framework Core 2.1 How to OrderBy() and Distinct()
return await _context.SdrSettingHistory .Where(x => x.StartDate != null) .Select(x => x.StartDate.Value.Year) .Distinct() .OrderBy(x => x) .ToListAsync();
https://stackoverflow.com/questions/52677846/entity-framework-core-2-1-how-to-orderby-and-distinct
Programming: Intersect Two Arrays C#
Input: Array 1: [90,95,136,137], Array 2: [95,135,136,137]
Output: Array INTERSECT: [95,136,137], Array DELETE: [90], Array NEW: [135]
static void Main(string[] args)
{
List<int> lstIDInDB = new List<int>()
{
90,95,136,137
};
List<int> lstIDInModel = new List<int>()
{
95,135,136,137
};
//var arrKeep = (from x in lstIDInDB
// join y in lstIDInModel on x equals y
// select x)
// .OrderBy(x => x)
// .ToList();
var arrKeep = lstIDInDB.Intersect(lstIDInModel).ToList();
Console.WriteLine("Items will be Keep:");
//Keep
for (int i = 0; i < arrKeep.Count; i++)
{
Console.WriteLine(arrKeep[i]);
}
//var arrDeleteAll = (from x in lstIDInDB
// join y in lstIDInModel on x equals y into z
// from t in z.DefaultIfEmpty()
// select x)
// .OrderBy(x => x)
// .ToList();
//var arrDelete = arrDeleteAll.Except(arrKeep).ToList();
var arrDelete = lstIDInDB.Except(arrKeep).ToList();
Console.WriteLine("Items will be Delete:");
//Delete
for (int i = 0; i < arrDelete.Count; i++)
{
Console.WriteLine(arrDelete[i]);
}
//var arrNewAll = (from x in lstIDInModel
// join y in lstIDInDB on x equals y into z
// from t in z.DefaultIfEmpty()
// select x)
// .OrderBy(x => x)
// .ToList();
//var arrNew = arrNewAll.Except(arrKeep).ToList();
var arrNew = lstIDInModel.Except(arrKeep).ToList();
Console.WriteLine("Items will be New:");
//New
for (int i = 0; i < arrNew.Count; i++)
{
Console.WriteLine(arrNew[i]);
}
}