I am working with Entity Framework. I am retrieving data using a query with .Where
and .Select
conditions.
var myData = await _dbContext.Samples.Include(i => i.Experiment)
.Include(i => i.Experiment.Test)
.Include(i => i.Experiment.Test.Project)
.Include(i => i.Samples)
.Where(i => i.Experiment.Test.Status == 3 && i.Experiment.Test.TestId == 3)
.Select( e => new ExperimentCollections() {
ExperimentNumber = e.Experiment.Test.ExperimentNumber,
ExperimentName = e.Experiment.Test.Project.Name
}).ToListAsync();
There can be multiple rows with the same ExperimentNumber
and I need to avoid it from inserting into myData
.
For example: in myData
:
myData[0]
ExperimentNumber: 1520,
ExperimentName: ABC
myData[1]
ExperimentNumber: 1521,
ExperimentName: EFG
myData[2]
ExperimentNumber: 1520,
ExperimentName: HIJ
I need to avoid myData[2]
data to be inserted into myData
using Entity Framework in single single query without using foreach loop.
I tried following code with .Distinct()
var myData = await _dbContext.Samples.Include(i => i.Experiment)
.Include(i => i.Experiment.Test)
.Include(i => i.Experiment.Test.Project)
.Include(i => i.Samples)
.Where(i => i.Experiment.Test.Status == 3 && i.Experiment.Test.TestId == 3)
.Select( e => new ExperimentCollections() {
ExperimentNumber = e.Experiment.Test.ExperimentNumber,
ExperimentName = e.Experiment.Test.Project.Name
}).Distinct().ToListAsync();
And I even tried .Distinct().OrderBy(i => i.TestNumber) too.