C# 从列表中选择不同的值

C# 从列表中选择不同的值,c#,asp.net,linq,visual-studio,C#,Asp.net,Linq,Visual Studio,以下是我的列表代码: public static List<Int32> getValueFilterItems() { List<Int32> gridValues = new List<Int32>(); ASPxGridView gridViewPromo = (ASPxGridView)gridViewPromo.GetRowValues(4, "Value");

以下是我的列表代码:

    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;
    }
我只想从列表中返回不同的值,因为有许多重复的值。 我该怎么做

谢谢

您可以使用:

更有效的方法是使用哈希集:

最后一点注意:如果选择单个值,为什么还需要一个集合?

简单的方法是使用:

 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);

将返回值更改为
返回gridValues.Distinct.ToList

列表中只有一个元素此函数不会在列表中返回多个值,为什么您会遇到发布的问题,请提供详细信息将gridview转换为int时您确定吗?i get error'System.Linq.Queryable.DistinctSystem.Linq.IQueryable'是一个'method',这在上下文中是无效的OK我明白你对hashset的意思,但是有错误,我不知道为什么:使用未分配的局部变量'gridviewpromo'@user2991718行,错误为ASPxGridView gridviewpromo=ASPxGridViewgridViewPromo.GetRowValues4,Value;尝试改变it@user2991718:我编辑了我的答案,以提及gridviewpromo问题。但是我不知道GridView在哪里,这就是为什么我使用了YourGridIs的原因。@user2991718:那么我不明白你为什么需要施放,以及你想施放什么。直接使用网格:Convert.ToInt32gridViewPromo.GetRowValues4,Value;。以ASPxGridView开头的行似乎完全多余。我发现错误“System.Linq.Queryable.DistinctSystem.Linq.IQueryable”是一个“方法”,在给定上下文的情况下无效
ASPxGridView gridViewPromo = (ASPxGridView) whateverYourGridIs;
int val = Convert.ToInt32(gridViewPromo.GetRowValues(4, "Value"));
 return gridValues.Distinct().ToList();
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);
public static Int32 getValueFilterItems(int visibleIndex, string fieldNames)
{            
    ASPxGridView gridViewPromo = (ASPxGridView)gridViewPromo.GetRowValues(visibleIndex,fieldNames);
    return Convert.ToInt32(gridViewPromo);
}