从列表中选择不同的值

时间:2013-11-19 10:16:23

标签: c# asp.net linq visual-studio

这是我的列表代码:

    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值,因为有许多重复值。 我怎么这样?

由于

3 个答案:

答案 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();