webForumDet fria alternativet

Söka i lista

.NETur .NET

6 svar · 556 visningar · startad av invecklaren

Medlem sedan jan. 2008280 inlägg
Frågan#1

Hej!

Jag har en lista med heltal (kan vara en array eller en List(of Integer))
Nu vill jag fråga listan:
- Vilka är de unika heltalen i listan (motsv SELECT DISTINCT i SQL)

1. Vad ska jag välja för typ av lista?
2. Hur ska jag kunna fråga listan?

Medlem sedan jan. 20022 440 inlägg
#2

Om du kör .net framework 3.5 tror jag det är en extension i List som heter Distinct()

List<Stuff> testlist = new List<Stuff>().Distinct();
Medlem sedan jan. 20022 440 inlägg
#3

I namnrymden System.Linq

Medlem sedan jan. 2008280 inlägg
#4

Det verkar synnerligen coolt. Ska kolla upp det efter ett par Guinness!

Medlem sedan jan. 2008280 inlägg
#5

Detta verkar inte funka:

    protected void Page_Load(object sender, EventArgs e)
    {
       System.Linq.List<Int32> testlist = new System.Linq.List<int32>().Distinct();
    }

Error 1 The type or namespace name 'List' does not exist in the namespace 'System.Linq' (are you missing an assembly reference?) C:\Test\ColorWebApp\WebSite2\Default.aspx.cs 12 20 C:\...\WebSite2\

Medlem sedan mars 20007 896 inlägg
#6
List list<int> = new List<int>() {1,1,2,2,3,3,4,4,5,5};

IEnumerable distinctList = list.Distinct();
...

Du måste fylla din lista innan du kan plocka ut de unika värdena. Om du enbart vill ha en lista med unika värden så finns HashSet istället.

Medlem sedan jan. 20022 440 inlägg
#7

Om du högerklickar på .Distinct() så får du upp vad distinct returnerar för någonting.

Du kan göra något som:

var list = List<Int32>{1, 2, 3, 4, 5, 6, 6, 6, 1, 1};
var newList = list.Distinct().ToList();

Linq's extension metoder är toppen på det viset.
Det finns andra alternativ också

 list.All().Where(kriteria)

där kriteria är function / lambda expression också.

126 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)