当前位置: 首页 > 编程语言 > C#

在DataView的RowFilter中选择DISTINCT分享

时间:2023-04-11 10:44:41 C#

SelectDISTINCT在DataView的RowFilter中我试图根据与另一个表的关系来缩小DataView中的行,我使用的RowFilter如下;dv=newDataView(myDS.myTable,"idIN(SELECTDISTINCTparentIDFROMmyOtherTable)","nameasc",DataViewRowState.CurrentRows);“myTable”和“myOther”表通过myTable.ID和myOtherTable.parentID关联,因此我们的想法是DataView应该只包含“myTable”中的行,这些行在“myOtherTable”中具有相应的子行。不幸的是,我收到了这个错误;语法错误:“DISTINCT”运算符后缺少操作数。据我所知,SQL没有问题,所以我想知道使用DISTINCT关键字作为RowFilter的SQL的一部分是否有一些限制?有人有什么想法吗?不幸的是,我认为您不能在DataView的过滤器表达式中执行子查询。您只能在某些表达式中使用SQL的一个子集(记录在此处)。您可能需要单独执行子查询(SELECTDISTINCTparentIDFROMmyOtherTable)。本文描述了问题和可能的解决方案。遗憾的是,您不能这样做,因为RowFilter属性不支持distinct关键字。这是您可以在RowFilter中执行的表达式列表(它只是一个DataColumn表达式):http://msdn.microsoft.com/en-us/library/system.data.datacolumn.expression.aspxDataViews有一个ToTable方法,多个重载采用布尔值来指定是否仅返回不同的行。这是一种方法:http://msdn.microsoft.com/en-us/library/wec2b2e6.aspx以下是使用方法:DataTablenewDataTable=myDataView.ToTable(true,[arrayofcolumnnamesasstrings]);DataViewdvBindAssignedByDropDown=newDataView();DataTabledtBindAssignedByDropDown=newDataTable();dvBindAssignedByDropDown=ds.Tables[0].DefaultView;字符串[]strColnames=新字符串[2];strColnames[0]="红名";1]="红色值";dtBindAssignedByDropDown=dvBindAssignedByDropDown.ToTable(true,strColnames);ddlAssignedby.DataTextField="RedNamesNames";ddlAssignedby.DataValueField="RedNames";Insert(0,"赋值者");ddlAssignedby.Items[0].Value="0";以下代码从表/数据视图中提取不同的值/记录,即(PROD_DESP_TRN)具有字段(CONTAINER_NO)最后,此代码用唯一值/记录填充组合框(cmbContainerNo)表单声明:DimdsLocalAsDataSetDimdvmAsDataViewManagerPrivateSubFillcomboContainer()尝试DimdvAsDataView=NewDataViewcmbContainerNo.DataSource=Nothingdv=dvm.CreateDataView(dsLocal.Tables("PROD_DESP_TRN"))dv.Sort="CONTAINER_NO"cmbContainerNo.DataSource=dv.ToTable(True,"CONTAINER_NO")cmbContainerNo.DisplayMember="CONTAINER_NO"赶上exAsExceptionMsgBox(ex.Message)FinallyEndTryEndSubTry省略“DISTINCT”在这种情况下,结果应该相同或不同。从那里排除故障。以上就是C#学习教程:在DataView的RowFilter中选中DISTINCT共享的所有内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:

最新推荐
猜你喜欢