【发布时间】:2021-09-26 19:09:22
【问题描述】:
我正在使用实体框架 (C#) 执行 LINQ to SQL 查询,我只需要检索单个列的不同值。问题是,在执行不同的操作之前,我需要修剪其中的一些列。例如:
Region
--------------
Primary
Primary Region
Secondary
Secondary Region
Primary Region
应该变成:
Region
-----------
Primary
Secondary
现在我正在通过以下查询实现这一点:
IQueryable<Region> regions =
(
from region in db.Regions
select new Region
{
RegionName = detail.RegionName
}
).Distinct().OrderBy(r => r.RegionName);
return regions
.ToArray()
.Select(r => r.RegionName)
.ToArray()
.Distinct()
.Select(r => new Region { RegionName = r })
.ToArray();
public class Region
{
private string _regionName;
public string RegionName
{
get => _regionName;
set => _regionName = value?.IndexOf(" Region") > 1 ? value?.Substring(0, value.IndexOf(" Region")) : value;
}
}
Region 类负责剥离名称。然而,这似乎非常低效,必须将所有转换为数组并返回到 Region 并返回到数组。有没有更好的办法?
【问题讨论】:
-
哇,所有的 ToArray 是怎么回事?为什么你认为有必要把它到处打?
-
请澄清。 LINQ to SQL 和实体框架是两种相互竞争的技术。我怀疑你在这里使用的是后者。此外,请说明您使用的是 EF Core 还是 EF for .Net Framework (4.x)
标签: c# entity-framework linq linq-to-sql linq-to-entities