这是我的列表代码:
public static List<Int32> getValueFilterItems()
{
List<Int32> gridValues = new List<Int32>();
ASPxGridView gridViewPromo = (ASPxGridView)gridViewPromo.GetRowValues(4, "Value");
int val = Convert.ToInt32(gridViewPromo);
gridValues.Add(val);
return gridValues;
}
我想从列表中只返回DISTINCT值,因为有许多重复值。 我怎么这样?
由于
答案 0 :(得分:7)
您可以使用Distinct
:
return gridValues.Distinct().ToList()
更有效的方法是使用HashSet<Int32>
:
public static List<Int32> getValueFilterItems()
{
HashSet<Int32> values = new HashSet<Int32>();
ASPxGridView gridViewPromo = (ASPxGridView)gridViewPromo.GetRowValues(4, "Value");
int val = Convert.ToInt32(gridViewPromo);
values.Add(val);
return values.ToList();
}
修改:您也在使用gridViewPromo
,即使它是已整合的。您必须在使用它之前对其进行初始化:
ASPxGridView gridViewPromo = (ASPxGridView) whateverYourGridIs;
int val = Convert.ToInt32(gridViewPromo.GetRowValues(4, "Value"));
最后注意事项:如果您选择单个值,为什么还需要收藏?
答案 1 :(得分:0)
简单的方法是使用:
return gridValues.Distinct().ToList();
虽然HashSet不需要Distinct。
你的函数在列表中没有返回多个值,我想你是从外面调用这个函数
HashSet<Int32> values = new HashSet<Int32>();
var value1 = getValueFilterItems(4, "Value");
var value2 = getValueFilterItems(5, "Value");
//HashSet returns true from Add method if element added, returns false if element already exists
values.Add(value1);
values.Add(value2);
修改后的函数应该是HashSet
public static Int32 getValueFilterItems(int visibleIndex, string fieldNames)
{
ASPxGridView gridViewPromo = (ASPxGridView)gridViewPromo.GetRowValues(visibleIndex,fieldNames);
return Convert.ToInt32(gridViewPromo);
}
答案 2 :(得分:0)
将返回值更改为
return gridValues.Distinct.ToList();