首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用LINQ和变量动态查询数据库?

如何使用LINQ和变量动态查询数据库?
EN

Stack Overflow用户
提问于 2020-04-01 12:54:44
回答 2查看 400关注 0票数 2

我有一个数据库表,其中有100个列,标记为D1、D2、D3等。

在我的方法(ASP.NET MVC)中,我需要检查这些列是否为null,然后在视图中的表中显示它们。我真的不想做这个

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if(db.Datatable.Select(x=>x.D1).FirstOrDefault() != null)
{
  //do code
}
if(db.Datatable.Select(x=>x.D2).FirstOrDefault() != null)
{
  //do code
}
if(db.Datatable.Select(x=>x.D3).FirstOrDefault() != null)
{
  //do code
}

如果声明和看起来很糟糕的话,那将是100。所以我在这里开始了这段代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  for(int i = 1; i < 100; i++)
  {
       var dbField = "D" + i;  //D1,D2,D3....

       var currField = db.Datatable.Select(x => x.dbField).FirstOrDefault();


       //here i would add the value (0 for null, 1 for data) to an array, which i would handle in the view
  }

除了LINQ/C#不喜欢这个。显然,它会在Select语句中对dbField引发错误。您不能只设置.Select(x=x.variable)。我读过关于创建自己的lambda表达式树和构建自定义动态查询的文章,有关于如何做到这一点的想法吗?如何自定义为Select语句创建字段名?谢谢。

EN

回答 2

Stack Overflow用户

发布于 2020-04-02 06:14:15

没有理由重复从同一个不变的集合中获取第一个元素。简单地从集合中获取第一个元素,然后处理检索到的对象:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var element = db.Datatable.FirstOrDefault();

这已经极大地简化了您的代码并提高了性能(因为您不需要迭代每个属性的集合):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if(element.D1 != null)
{
    //do code
}

// and so on...

现在还不清楚为什么需要确定每个字段都包含一个非空值。您从未发布过任何显示如何使用这些值的代码。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//here i would add the value (0 for null, 1 for data) to an array, which i would handle in the view

通常,最好只使用来确保视图能够处理空值,因为这意味着当某个值为null时,您不需要担心代码的执行。

如果这是不可能的,那么简单地将null值转换为默认的非空值仍然更容易。这意味着您仍然不必担心空值(在您转换它们之后),因为您将不再有任何空值。

要做到这一点,一个简单的方法是使用空合并运算符。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var firstName = element.D1 ?? String.Empty;

这可以确保null值被默认值替换(您可以指定这个值,我只是在这里选择了一个空字符串,但是您可以任意选择)。

还要注意,对于非空值(如int ),甚至不需要这样做,因为这些值将自动默认为0

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//here i would add the value to an array

为什么使用数组而不是对象?不清楚为什么手动处理每个属性(及其值)而不是单独传递对象,这是传递数据的更好的OOP方式。

同时希望手动处理所有数据,同时也不想处理所有这些数据,这是矛盾的。

票数 0
EN

Stack Overflow用户

发布于 2020-04-02 05:49:52

我认为,如果你能更准确地解释你想做什么,我们就能更好地帮助你。

当我看到您的代码时,我推断您的视图中的表将只显示一条带有他的适当属性/列的记录。如果你想这么做,没关系。

另一方面,根据列数对表进行迭代是个坏主意,因为您是在耦合两个抽象级别。我的意思是,您的MVC方法不应该了解列的数量,这就是您使用"for(int = 1;i< 100;i++)“所做的事情。实际上,如果存在表模式更新和列数更改,会发生什么情况?列的名称也一样吗?你的密码会被破坏的!

我认为你把这个问题从错误的一面转移到了我身上。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60980165

复制
相关文章
使用 Python 按行和按列对矩阵进行排序
假设我们采用了一个输入的 MxM 矩阵。我们现在将使用嵌套的 for 循环对给定的输入矩阵进行逐行和按列排序。
很酷的站长
2023/02/22
6.1K0
使用 Python 按行和按列对矩阵进行排序
对大文件字符进行计数
但是当文件过大时,会报错,显示空间不足: sort: write failed: /tmp/sortbDyE0W: No space left on device
生信编程日常
2020/10/10
6270
如何对列表进行搜索
logic [31:0] ram_block[1024] = '{default:0}
Lauren的FPGA
2019/10/30
2.7K0
使用Outlook对邮件进行分类
Outlook不愧为Office家族中的一员,相比国内FoxMail来说功能要强大的多。若再配上Exchange,那确实十分无敌。
深蓝studyzy
2022/06/16
2.2K0
使用Outlook对邮件进行分类
使用PyTorch对音频进行分类
对对象进行分类就是将其分配给特定的类别。这本质上是一个分类问题是什么,即将输入数据从一组这样的类别,也称为类分配到预定义的类别。
代码医生工作室
2020/07/03
5.8K0
对数据进行按文件后缀名分类
from os import walk,getcwd,makedirs,system
第4117座孤岛
2022/05/31
1.1K0
Java对List列表进行分组处理(对List列表固定分组/对List列表平均分组)
将一组数据平均分成n组 即:数据分组数固定为N,每组数据个数不定,每组个数由List列表数据总长度决定 /** * 将一组数据平均分成n组 * * @param source 要分组的数据源 * @param n 平均分成n组 * @param <T> * @return */ public static <T> List<List<T>> averageAssign(List<T> source, int n) { List<List<T>> result = new Ar
目的地-Destination
2023/03/06
3.5K0
使用Python按另一个列表对子列表进行分组
在 Python 中,我们可以使用各种方法按另一个列表对子列表进行分组,例如使用字典和使用 itertools.groupby() 函数,使用嵌套列表推导。在分析大型数据集和数据分类时,按另一个列表对子列表进行分组非常有用。它还用于文本分析和自然语言处理。在本文中,我们将探讨在 Python 中按另一个列表对子列表进行分组的不同方法,并了解它们的实现。
很酷的站长
2023/08/11
4530
使用Python按另一个列表对子列表进行分组
在 WordPress 后台如何使用分类和标签进行过滤文章列表?
我们知道默认情况下,WordPress 后台文章列表,可以通过分类进行过滤,那么是否可以通过标签过滤呢?甚至自定义的分类呢?
Denis
2023/04/13
3.5K0
在 WordPress 后台如何使用分类和标签进行过滤文章列表?
TensorFlow练习1: 对评论进行分类
TensorFlow是谷歌2015年开源的一个深度学习库,到现在正好一年。和TensorFlow类似的库还有Caffe、Theano、MXNet、Torch。但是论火爆程度,TensorFlow当之无愧,短短一年就在Github就收获了4万+颗星,把前面几个库获得的star加起来也不敌TensorFlow。
周小董
2019/03/25
8650
TensorFlow练习1: 对评论进行分类
TensorFlow练习2: 对评论进行分类
1、 使用大数据,了解怎么处理数据不能一次全部加载到内存的情况。如果你内存充足,当我没说
周小董
2019/03/25
6990
TensorFlow练习2: 对评论进行分类
React 基础案例 | 可折叠的问题列表和按分类展示的美食菜谱(三)
大家好,本篇文章小编将和大家一起做两个简单的案例——可折叠的问题列表和按分类展示的美食菜谱。这两个案例,我们还是继续练习 useState Hook 的用法。
前端达人
2021/08/10
9910
【Python】对字典列表进行去重追加
将M去重后的字典放入列表X中,得到X = [{dict1}, {dict2},{dict3}, {dict4}]
py3study
2020/01/07
1.9K0
思维导图 - 如何对信息进行分类?
绘制思维导图时,分类是最重要的,其需要满足MECE(相互独立,完全穷尽),而且需要逻辑自洽,否则就会导致结构不清晰,部分信息分类不明确 为什么要做分类? 因为人脑擅长记忆和处理结构化的信息 如何分类? 需要符合MECE(Mutually Exclusive & Collectivyly Exhaustive)原则,也就是相互独立,完全穷尽,简单来说就是不重不漏 分类集合需要逻辑自洽,比如时间关系,组合关系,关系,层次关系等 某一类信息太多的时候,也可以使用多级分类 常用分类和结构化分析模式 做信息分类
十毛
2021/07/20
6970
在 Python 中对服装图像进行分类
图像分类是一种机器学习任务,涉及识别图像中的对象或场景。这是一项具有挑战性的任务,但它在面部识别、物体检测和医学图像分析等现实世界中有许多应用。
很酷的站长
2023/08/11
5531
在 Python 中对服装图像进行分类
数据集 | 性别(按名称)数据集
该数据集将这些时间段内男婴和女婴的名字的原始计数结合在一起,然后计算出给定总数的名字的概率。来源数据集来自美国,英国,加拿大,澳大利亚等国家的政府机构。
数据科学人工智能
2022/03/30
4890
数据集 | 性别(按名称)数据集
SVM、随机森林等分类器对新闻数据进行分类预测
* 新闻爬取(crawler_cnstock.py,crawler_jrj.py,crawler_nbd.py,crawler_sina.py,crawler_stcn.py)
大数据技术与机器学习
2019/11/20
2.6K1
22 - lambda表达式对列表进行排序
如果列表元素是字典类型,如何利用lambda表达式对列表进行升序降序排序? # lambda 表达式只有一行代码,并返回该行代码的结果 a = [ {'name': 'Bill', 'age': '40'}, {'name': 'Mike', 'age': '18'}, {'name': 'Johb', 'age': '28'} ] print(a) print(sorted(a, key=lambda x: x['age'])) a.sort(key=lambda x: x[
ruochen
2021/05/23
1.6K0
22 - lambda表达式对列表进行排序
前端CHROME CONSOLE的使用:测量执行时间和对执行进行计数
利用 Console API 测量执行时间和对语句执行进行计数。 这篇文章主要讲: 使用 console.time() 和 console.timeEnd() 跟踪代码执行点之间经过的时间。 使用 console.count() 对相同字符串传递到函数的次数进行计数。 测量执行时间 time() 方法可以启动一个新计时器,并且对测量某个事项花费的时间非常有用。将一个字符串传递到方法,以便为标记命名。 如果您想要停止计时器,请调用 timeEnd() 并向其传递已传递到初始值设定项的相同字符串。 控制台随后会
企鹅号小编
2018/01/24
1.8K0
前端CHROME CONSOLE的使用:测量执行时间和对执行进行计数
点击加载更多

相似问题

django url没有反向匹配

20

Django url -没有反向匹配

13

Django url反向匹配错误

10

Django不匹配URL,没有反向匹配

31

Django没有反向匹配错误

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文