gpt4 book ai didi

c# - 按子句分组与 Distinct()

转载 作者:行者123 更新时间:2023-11-30 14:10:16 25 4
gpt4 key购买 nike

<分区>

我的 ASP.NET 自定义列表控件从数据库中获取其值 View .检索数据的方法最终返回类型为 List<Triplet> 的对象作为控件的数据源。

我为该方法找出了三种可能的实现方式,它们似乎都运行良好并给出了相同的结果。现在我不确定应该优先使用其中的哪一个。

关键是,我需要按字母顺序查询的唯一字符串,并且数据库中有 许多 重复项。所以我可以全部获取它们,然后执行 Distinct() 以获得唯一值...

public override object GetData()
{
return
(
from name in
(
from job in DBConnection.NewDataContext.vJobs
where job.name != null
select job.name

).Distinct().OrderBy(s => s)

select new Triplet(name, name, ListType)

).ToList();
}

...或者我可以使用 group by 子句并只选择键:

public override object GetData()
{
return
(
from job in DBConnection.NewDataContext.vJobs
where job.name != null
group job by job.name into names
orderby names.Key
select new Triplet(names.Key, names.Key, ListType)

).ToList();
}

我还想出了下面的,它使用了一个特殊的 EqualityComparer对于三胞胎。实际上这是我的第一种方法,但我不太喜欢它:

public override object GetData()
{
return
(
from job in DBConnection.NewDataContext.vJobs
where job.name != null
select new Triplet(job.name, job.name, ListType)

).ToList().Distinct(new TripletComparer()).OrderBy(t => (string)t.First).ToList();
}

我认为 goup-by-solution 将大部分工作留给了数据库 (MS SQL Server),这可能是优点也可能是缺点。我真的不知道。也许 Distict() 解决方案不得不将太多不必要的数据从数据库推送到我的方法?

有什么想法应该实现吗?好像就是因为树太多看不到森林了...

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com