# @manhnguyenv

Welcome to my blog!

# List & Array

December 18, 2019 00:10

# 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

https://entityframeworkcore.com/knowledge-base/51234185/translate-sql-query-into-entity-framework-core-2-1

https://entityframeworkcore.com/knowledge-base/54468767/selecting-all-rows-based-on-a-distinct-column-in-entity-framework-core

### 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

https://stackoverflow.com/questions/57673111/ef-core-2-1-evaluates-locally-when-sum-complex-and-grouping?rq=1

```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: , Array NEW: 

`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]); }}`