簡體   English   中英

從列表中選擇不同的值

[英]Selecting Distinct Values from a List

這是我的清單代碼:

    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值,因為有很多重復的值。 我該怎么辦?

謝謝

您可以使用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"));

最后說明:如果選擇單個值,為什么仍然需要收集?

簡單的方法是使用:

 return gridValues.Distinct().ToList();

盡管HashSet不需要兩者都不同。

您的函數不會在列表中返回多個值,我想您是從類似這樣的外部調用此函數的

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

將返回值更改為
return gridValues.Distinct.ToList();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM