[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

【超过500家企业部署】AWS搭建、运维、监控服务

【超过500家企业部署】AWS搭建、运维、监控服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

[仅适用于 WordPress] 云服务器“Web Speed”

[仅适用于 WordPress] 云服务器“Web Speed”

[便宜]网站安全自动诊断“快速扫描仪”

[便宜]网站安全自动诊断“快速扫描仪”

[预约系统开发] EDISONE定制开发服务

[预约系统开发] EDISONE定制开发服务

[注册100个URL 0日元] 网站监控服务“Appmill”

[注册100个URL 0日元] 网站监控服务“Appmill”

【兼容200多个国家】全球eSIM“超越SIM”

【兼容200多个国家】全球eSIM“超越SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

【全球专属服务】Beyond北美及中国MSP

【全球专属服务】Beyond北美及中国MSP

[YouTube]超越官方频道“美由丸频道”

[YouTube]超越官方频道“美由丸频道”

[Entity Framework Core] 如何在Where语句中指定带有变量的列[ASP.NET Core]

大家好,我是系统开发部的Hase。

我最近又开始使用 ASP.NET Core 进行开发,令
我印象深刻的是,在 Entity Framework Core 中使用Where检索信息时,可以使用变量动态指定列名称,所以我
想向您介绍一下。拥有它。

前言

首先,假设您有如下表数据。

账户

ID 昵称
1 瑞纳 畠山 雷纳
2 俊明 松崎 俊明
3 塞纳 石井 塞纳
4 庄三 小仓 庄三
5 小太郎 小太郎

*这是测试数据,摘自

我想通过指定每一列和值来从该数据中提取记录。

正常方式

由于无法以正常方式动态指定列,因此代码如下。

string columnName = "LastName"; // 列名 string value = "Hatakeyama"; // 搜索值 // 从指定的列名和值中提取记录 var query = context.Accounts; // NickName 如果您指定列 case "NickName": query = query.Where(c => c.NickName== value); // 如果指定 LastName 列 case "LastName": query = query.Where(c => c .LastName== value); // 如果指定 FirstName 列 case "FirstName": query = query.Where(c => c.FirstName == value); } var account = query.FirstOrDefault () ;

这会导致相当冗余的代码,因为每个列名都是使用 switch 语句中的情况进行比较的。

如何用变量指定列名

但是,Entity Framework Core 有一种动态指定列名称的方法!
这就是所谓的
EF.Property 方法这是一个出色的功能,允许您使用参数动态指定属性(列名称)。

如果你真的修改上面的代码来使用这个方法,

string columnName = "FirstName"; // 列名称 string value = "Sena"; // 搜索值 // 从指定的列名称和值中提取记录 var account = context.Accounts.Where(c => EF.Property<string> (c, 列名) == 值).FirstOrDefault();

现在,您可以将其写在一行中,而无需使用 switch 语句。
*您必须使用 Microsoft.Entity Framework Core。

概括

你觉得怎么样?

就我个人而言,我认为这是一个非常有用的功能。
我相信当您想要实现丰富的搜索功能时它会很有用,所以
请在使用 Entity Framework Core 时将其作为参考!

最后

我开设了我所属的系统开发服务网站“SEKARAKU Lab”。
Beyond是从服务器设计搭建到运营的一站式服务,所以如果您在服务器端开发方面遇到任何问题,请随时联系我们。
SEKARAKU 实验室: [https://sekarakulab.beyondjapan.com/](https://sekarakulab.beyondjapan.com/)

虽然很短,但仅此而已。

如果您觉得这篇文章有帮助,请点赞!
3
加载中...
3 票,平均:1.00 / 13
4,607
X Facebook 哈特纳书签 口袋
[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

[大阪/横滨] 积极招募基础设施工程师和服务器端工程师!

[大阪/横滨] 积极招募基础设施工程师和服务器端工程师!

写这篇文章的人

关于作者

长谷达也

应届毕业生加入Beyond Co., Ltd.。

我们开发网络系统(开发在浏览器上运行的服务和系统,例如网络服务、数字内容和业务管理系统)和游戏API(开发与应用程序游戏通信的程序)。

我们还为 Shopify 开发私人/自定义应用程序。

原本在大阪事务所工作,2019年调到横滨事务所。
我的爱好是棒球/卡拉OK/动漫