将 DataTable 列值与行过滤器 C# 中的枚举进行比较

     2023-02-19     11

关键词:

【中文标题】将 DataTable 列值与行过滤器 C# 中的枚举进行比较【英文标题】:Compare DataTable Column Value with Enum in Row Filter C# 【发布时间】:2017-08-07 08:05:24 【问题描述】:

我有一个要使用 DataView 过滤的数据表。过滤条件基于枚举值和字符串数据表列值。以下是我正在尝试做的事情

DataView dv = data.DefaultView;
dv.RowFilter = "Status =" + Enum.Valid;

由于状态列是字符串,行过滤器不起作用。我尝试将“状态”列作为“枚举”,但它仍然不起作用。

请提出建议。

谢谢

【问题讨论】:

Enum.Valid.ToString () 【参考方案1】:

来自 DataView.Filter 文档:“有关详细信息,请参阅 DataColumn 类的 Expression 属性”

来自DataColumn.Expression Documentation

对于包含枚举值的列,将值转换为整数数据类型。例如: "枚举列 = 5"

【讨论】:

OP写数据表的列类型是字符串【参考方案2】:

如果Status列中的字符串值是枚举成员的标识符名称,则可以进行字符串比较:

var dv = data.DefaultView;
var enumValueAsString = Enum.Valid.ToString();
dv.RowFilter = $"Status = 'enumValueAsString'";

Documentation:

为过滤器创建表达式时,用单引号将字符串括起来

另一方面,如果Status 列中的值属于Enum 类型,则需要进行数值比较:

var dv = data.DefaultView;
var enumValueAsInt = (int)Enum.Valid;
dv.RowFilter = $"Status = enumValueAsInt";

【讨论】:

这给了我一个例外,“=”运算符不能在字符串和枚举类型之间使用 在这种情况下,我怀疑“状态列是字符串”(System.String) 的断言是否正确。 现在我将“状态”列更改为“枚举”类型。【参考方案3】:

所以它在不使用 DataView 的情况下对我有用

 var result = dataTable.AsEnumerable()
            .Where(x => x.Field<IfmEqcStatus>("Status") == Enum.Valid);

【讨论】:

从 C# 中的 DataTable 中获取 Distinct Column 以及其他列值

】从C#中的DataTable中获取DistinctColumn以及其他列值【英文标题】:TakingDistinctColumnalongwithothercolumnvaluesalsofromDataTableinC#【发布时间】:2013-12-1610:43:28【问题描述】:我有一个数据表,其中有4个列。Col1、Col2、Col3、Col4。我想过滤DataT... 查看详情

将包含列表的记录值与 Postgres 中的列值进行比较

】将包含列表的记录值与Postgres中的列值进行比较【英文标题】:ComparearecordvaluecontainingalistwithcolumnvaluesinPostgres【发布时间】:2021-02-0120:50:57【问题描述】:我需要编写一个选择语句,该语句必须使用一个列值将两个表链接在一... 查看详情

根据 C#2.0 中的列值过滤 DataTable 行

】根据C#2.0中的列值过滤DataTable行【英文标题】:FilterDataTablerowsbasedonacolumnvalueinC#2.0【发布时间】:2020-03-0614:06:49【问题描述】:我有一个包含n行/列的数据表。我想根据只有一个字符值为“*”的列过滤行。我的版本是C#2.0。如... 查看详情

将所有列值与 Excel 中的单个单元格进行比较

】将所有列值与Excel中的单个单元格进行比较【英文标题】:CompareallcolumnvaluesagainstindividualcellsinExcel【发布时间】:2019-04-1716:59:45【问题描述】:我想查找C列中的任何行是否与A或B列中的任何单元格匹配,如果匹配,则在相邻单... 查看详情

需要一种更好的方法来将一个列值与同一表行中的多个列值进行比较

】需要一种更好的方法来将一个列值与同一表行中的多个列值进行比较【英文标题】:Needabetterwaytocompareonecolumnvaluetomanycolumnvaluesinthesametablerow【发布时间】:2021-12-1222:38:50【问题描述】:我有一个这样构造的SQL2017数据表:A1235100... 查看详情

如果一个列值与第二个 df 列值匹配,我有两个数据框过滤 onmatch 列行

】如果一个列值与第二个df列值匹配,我有两个数据框过滤onmatch列行【英文标题】:Ihavetwodataframesifonecolumnvaluematchesseconddfcolumnvaluesfiltertheonmatchcolumnrows【发布时间】:2018-02-0812:47:40【问题描述】:我这里有两个数据框:df1在这里... 查看详情

c#计算datatable中某一列值的和

doublesumPercentage=dt.AsEnumerable().Where(dr=>{returndt.Rows.IndexOf(dr)>0;}).Sum(e=>Convert.ToDouble(e.Field<String>(6)))//计算某一列的值总和EnumerableRowCollectionerc=dt.AsEnumerable().Where 查看详情

C# DataTable -> 需要根据列值生成一个ID

】C#DataTable->需要根据列值生成一个ID【英文标题】:C#DataTable->NeedtogenerateanIDbasedonthecolumnvalues【发布时间】:2021-08-1910:03:07【问题描述】:ValueIDAAABBC期望的输出ValueIDA1A1A1B2B2C3我需要根据对值列进行分组来创建ID。所有A和B的... 查看详情

数组列值与配置单元中的正常列值之间的比较

】数组列值与配置单元中的正常列值之间的比较【英文标题】:comparisionbetweenarraycolumnvalueswithnormalcolumnvaluesinhive【发布时间】:2015-09-1806:51:25【问题描述】:表1列1列211,2,10211,12,1331,2,14420,1,10511,12,13,14表2列1列21次购买2产品视图10... 查看详情

熊猫:将列值与另一列中的特定值相加

】熊猫:将列值与另一列中的特定值相加【英文标题】:Pandas:sumcolumnvaluesagainstspecificvalueinanothercolumn【发布时间】:2021-08-3002:59:30【问题描述】:我正在使用这个数据框:InvoiceNoAmountYear-Month11002019-0121252019-0232002019-0243002019-03512020... 查看详情

ExtJS 4.2网格单元格编辑如何将列值与组合显示值绑定

】ExtJS4.2网格单元格编辑如何将列值与组合显示值绑定【英文标题】:ExtJS4.2gridcelleditinghowtobindcolumnvaluewithcombodisplayvalue【发布时间】:2014-08-1700:39:53【问题描述】:我有一个带有单元编辑插件的网格。我的一个列是int字段,它表... 查看详情

将列值与第一行进行比较并保留 R 中的原始值

】将列值与第一行进行比较并保留R中的原始值【英文标题】:ComparecolumnvaluesagainstfirstrowandretainoriginalvaluesinR【发布时间】:2019-04-1900:23:44【问题描述】:我有一个很大的(当然)光谱数据矩阵,每列代表不同的质量值,而行代... 查看详情

将 DataFrame 列值与另一个 DataFrame 列匹配并计算命中数

】将DataFrame列值与另一个DataFrame列匹配并计算命中数【英文标题】:MatchDataFramecolumnvalueagainstanotherDataFramecolumnandcounthits【发布时间】:2020-06-2607:24:52【问题描述】:我有两个SparkDataFrame。其中df1包含地址和df2街道名称、城市、地... 查看详情

C# - 将 DataReader 转换为 DataTable

】C#-将DataReader转换为DataTable【英文标题】:C#-ConvertingDataReadertoDataTable【发布时间】:2021-06-2315:24:30【问题描述】:我想将DataReader转换为DataTable以显示数据库中的列表(demoClients)中的所有客户。目前我有这个:usingSystem;usingSyste... 查看详情

从 C# Datatable 将数据插入 SQL Server 中的特定列

】从C#Datatable将数据插入SQLServer中的特定列【英文标题】:InsertdataintospecificcolumnsinSQLServerfromC#Datatable【发布时间】:2017-03-1407:01:57【问题描述】:假设我的SQLServer表看起来像Col1|Col2|Col3|Col4|Col5我的数据表看起来像ColX|ColY|ColZ如何... 查看详情

R - 如果列值与字符向量中的任何值匹配,则返回它旁边的列 [重复]

】R-如果列值与字符向量中的任何值匹配,则返回它旁边的列[重复]【英文标题】:R-ifcolumnvaluematchesanyvalueincharactervector,returncolumnbesideit[duplicate]【发布时间】:2018-06-0212:00:16【问题描述】:这里是R的新手,甚至是编码。我在数据... 查看详情

将值与 C# 中的子类关联

】将值与C#中的子类关联【英文标题】:Associateavaluewithasubclassinc#【发布时间】:2011-03-2004:43:24【问题描述】:我有以下课程,我的问题在于它的GetComponent函数classGameObjectprivateList<GameComponent>_components=newList<GameComponent>();pu... 查看详情

将列值分配给c#中的数据集时出现“位置无行”

】将列值分配给c#中的数据集时出现“位置无行”【英文标题】:\'Norowatposition\'whenassigningcolumnvaluetoadatasetinc#【发布时间】:2013-12-1906:48:19【问题描述】:我正在尝试执行以下代码。我要做的就是将数据集中的一列复制到另一个... 查看详情