gpt4 book ai didi

c# - 使用 new 进行 linq 查询的更好方法

转载 作者:太空狗 更新时间:2023-10-30 01:33:57 25 4
gpt4 key购买 nike

是否有更好的方法 - 使用从标准 SQL 服务器中提取的 Entity Framework :

我正在使用 telerik radgrid 并提前将字段名称放入列中,以便它与从 linq 查询中提取的数据相匹配,例如:

 var zips = (from z in db.zipcode_lookup select z).ToList();
zipCodeGrid.DataSource = zips;

而且效果很好。但是我需要将两个字段合二为一,所以我现在需要这样做:

var zips = (from z in db.zipcode_lookup select new 
{
zip_code = z.zip_code,
fullName = z.driver_details.first_name + " " + z.driver_details.last_name,
driver_id = z.driver_id,
zone = z.zone
} ).ToList();

这也很好用。我想做的是不必重新创建已经存在的所有字段(邮政编码、驱动程序 ID 和区域)。

为什么我不能做这样的事情:

 var zips = (from z in db.zipcode_lookup
select new
{
z,
fullName = z.driver_details.first_name + " " + z.driver_details.last_name
}
).ToList();

就像我说的那样有效,但我经常遇到这种情况,如果有更好的方法,我会非常感激。

编辑 -

这有点短(就像我说的,在这种情况下没什么大不了的,但有时有 20 或 30 列更重要)

var zips = (from z in db.zipcode_lookup
select new
{
z.zip_code,
z.zone,
z.driver_id,
fullName = z.driver_details.first_name + " " + z.driver_details.last_name
}
).ToList();

我编辑了某人的答案,但没有意识到它必须经过同行评审。出于某种原因,这适用于下面介绍的新类解决方案:

 var zips = (from z in db.zipcode_lookup.ToList()
select new ZipData(z)).ToList();

最佳答案

我不会说有更好的方法。问题是,无论哪种情况,C# 编译器都会生成一个匿名类型来表示该数据。解决这个问题的唯一方法是更改​​模型。即使您编写的行数更少(例如仅指定要添加一种类型的属性),我认为它也不会真正有所改进。会有更多的混淆行为,性能等仍然是一样的。我只建议您使用现有的东西,除非更改您的模型/数据库不费吹灰之力。

关于c# - 使用 new 进行 linq 查询的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32236993/

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