【发布时间】:2021-04-22 10:10:06
【问题描述】:
我正在使用实体框架。我正在使用带有.Where 和.Select 条件的查询检索数据。
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();
可以有多行具有相同的ExperimentNumber,我需要避免它插入myData。
例如:在myData:
myData[0]
ExperimentNumber: 1520,
ExperimentName: ABC
myData[1]
ExperimentNumber: 1521,
ExperimentName: EFG
myData[2]
ExperimentNumber: 1520,
ExperimentName: HIJ
我需要避免 myData[2] 数据在单个查询中使用实体框架插入到 myData 中,而不使用 foreach 循环。
我尝试使用 .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();
我什至也尝试过 .Distinct().OrderBy(i => i.TestNumber)。
【问题讨论】:
-
您尝试排除的只是实验 #1520 还是有其他标准?请发布minimal reproducible example。
-
@jwdonahue 我排除了相同的 ExperimentNumber 数据。如果出现相同的 ExperimentNumber 数据,则应将其排除。
-
哦,我想我现在看到了。您想避免重复数据吗?
-
这能回答你的问题吗? How can I do SELECT UNIQUE with LINQ?
-
@jwdonahue 是的,我需要避免使用相同 ExperimentNumber 的数据
标签: c# database api entity-framework visual-studio-2019