博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#中any()的用法
阅读量:2241 次
发布时间:2019-05-09

本文共 3931 字,大约阅读时间需要 13 分钟。

背景:

我们在一级考试系统维护的代码检查中,有一个地方一直有警告。Use '.Any()' to test whether this 'IEnumerable System.Data.DataRow ' is empty or not.

这里写图片描述

警告位置:

#region 程金鹏 页码格式  2015年12月9日15:58:35        ///         /// 页码格式        ///         /// 题库实体        public void PageNumberHeaderFormatH(WordQuestionEntity wordinfo, System.Data.DataTable dt)        {            WordQuestionRecordEntity studentrecord = new WordQuestionRecordEntity();            DataRow[] drs_word = dt.Select("QuestionFlag='页码格式'");            if (allRange.Sections.Count != 0)//警告位置            {                if (allRange.Sections[1].Headers[WdHeaderFooterIndex.wdHeaderFooterPrimary].Range.Text == "\r" || allRange.Sections[1].Headers[WdHeaderFooterIndex.wdHeaderFooterPrimary].Range.Text.Trim().ToString() == "")                {                    studentrecord.TimeStamp = MyInfo.TimeTamp();                    //如果表格不存在,则判分为0                    studentrecord.StudentID = FrmLogin.studentID;                    studentrecord.ExamAnswer = "空答案";                    studentrecord.Fration = "0";                    //将答题记录送到数据库                    for (int i = 0; i < dt.Rows.Count; i++)                    {                        if (drs_word.Count() == 0)                        {                            return;                        }                        if (!drs_word.Any())                        {                            return;                        }                        studentrecord.QuestionID = Convert.ToDouble(drs_word[0]["QuestionID"]);                    }                    WordLoadinfo.list.Add(studentrecord);                }                else                {                    studentrecord.TimeStamp = MyInfo.TimeTamp();                    //传递考生ID进studentrecord实体                    studentrecord.StudentID = FrmLogin.studentID;                    //将考生答案传递给studentrecord实体                    studentrecord.ExamAnswer = allRange.Sections[1].Footers[WdHeaderFooterIndex.wdHeaderFooterPrimary].Range.Text.Trim().ToString();                    //将试题的ID选择出来                    if (drs_word.Count() == 0)//警告位置                    {                        return;                    }                    studentrecord.QuestionID = Convert.ToDouble(drs_word[0]["QuestionID"]);                    //判分                    WordLoadinfo.list.Add(gonggong.getStudentRecord(drs_word, studentrecord));                }            }            else            {                studentrecord.TimeStamp = MyInfo.TimeTamp();                //如果表格不存在,则判分为0                studentrecord.StudentID = FrmLogin.studentID;                studentrecord.ExamAnswer = "空答案";                studentrecord.Fration = "0";                //将答题记录送到数据库                if (drs_word.Count() == 0)//警告位置                {                    return;                }                studentrecord.QuestionID = Convert.ToDouble(drs_word[0]["QuestionID"]);                WordLoadinfo.list.Add(studentrecord);            }        }        void IWordQuestionFlag.SwitchQuestionFlag(WordQuestionEntity wordinfo, System.Data.DataTable dt)        {            throw new NotImplementedException();        }        #endregion

在代码中,凡是需要在dtatable判断是否有数据的是否,都会提示警告。

警告百度,我们对警告位置

if (drs_word.Count() == 0)//警告位置{      return;}

进行了如下更换就不告警了:

if (!drs_word.Any()) {    return; }

对Any()用法的官方文档:

探索流程:

1、 官网查询。大概意思就是如果有数据则返回true ,否则返回false。

2、 通过查看Any方法的源码,相信大家看了源码也能理解一二:

public static bool Any
(this IEnumerable
source) { if (source == null) { throw Error.ArgumentNull("source"); } using (IEnumerator
enumerator = source.GetEnumerator()) { if (enumerator.MoveNext()) { return true; } } return false; }

我们可以发现,源码的大概意思就是通过计数器的移动,从零开始移动,如果发现next后为有值,则为true,否则表示database中为空,返回false。

总结:

至于现在我们为什么要用any()来替代count的方式,我还么有弄明白。如果大家有过类似经验的可以在评论里回复。

你可能感兴趣的文章
win10安装软件 打开时报错 找不到 msvcp120.dll
查看>>
PHPunit+Xdebug代码覆盖率以及遇到的问题汇总
查看>>
PHPUnit安装及使用
查看>>
PHP项目用xhprof性能分析(安装及应用实例)
查看>>
composer安装YII
查看>>
Sublime text3快捷键演示
查看>>
sublime text3 快捷键修改
查看>>
关于PHP几点建议
查看>>
硬盘的接口、协议
查看>>
VLAN与子网划分区别
查看>>
Cisco Packet Tracer教程
查看>>
02. 交换机的基本配置和管理
查看>>
03. 交换机的Telnet远程登陆配置
查看>>
微信小程序-调用-腾讯视频-解决方案
查看>>
phpStudy安装yaf扩展
查看>>
密码 加密 加盐 常用操作记录
查看>>
TP 分页后,调用指定页。
查看>>
Oracle数据库中的(+)连接
查看>>
java-oracle中几十个实用的PL/SQL
查看>>
PLSQL常用方法汇总
查看>>