---
title: "söka och lägga till i lista<>"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/167658-söka-och-lägga-till-i-lista"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "doggelito"
published: "2007-12-29T23:02:06.000Z"
updated: "2007-12-31T00:25:01.000Z"
replies: 9
views: 607
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/167658-söka-och-lägga-till-i-lista"
---

# söka och lägga till i lista<>

## #1 — doggelito, 2007-12-29T23:02Z

har stött på patrull! :)

har denna kod:

```
    public class ShortStat
    {
        private int _cntVisitors;
        private string _currentPeriod;

        public int CntVisitors
        {
            get { return _cntVisitors; }
            set { _cntVisitors = value; }
        }

        public string CurrentPeriod
        {
            get { return _currentPeriod; }
            set { _currentPeriod = value; }
        }
    }
```

```
List<ShortStat> stats = new List<ShortStat>();
ShortStat sStat;

sStat = new ShortStat;
sStat.CntVisitors = 123;
sStat.CurrentPeriod = "2006";
stats.Add(sStat);

sStat = new ShortStat;
sStat.CntVisitors = 456;
sStat.CurrentPeriod = "2008";
stats.Add(sStat);

int startYear = 2006;
int endYear = 2008;

for (int i = startYear; i <= endYear; i++)
{
       if(!stats.Exists(???)
       {
            sStat = new ShortStat();
            sStat.CurrentPeriod = i.ToString();
            sStat.CntVisitors = 0;
            stats.Add(sStat);
        }
}
```

Det jag vill är att eftersom 2007 inte finns i listan så vill jag lägga till den!
Kan man använda exists till detta? Och i så fall hur?

Permalänk: https://www.webforum.nu/p/167658

## #2 — CatZ, 2007-12-29T23:20Z

```
if(!stats.Contains(???)
```

 kanske löser dina bekymmer?

Permalänk: https://www.webforum.nu/p/2066808

## #3 — doggelito, 2007-12-29T23:42Z

Nej, tyvärr!
Contains vill ha en ShortStat som parameter. 
Jag vill på nått vis kolla ett visst värde i en ShortStat.

Permalänk: https://www.webforum.nu/p/2066813

## #4 — doggelito, 2007-12-29T23:59Z

Jag körde ett höftskott och tror fan att jag lyckades! :)

```
for (int i = startYear; i <= endYear; i++)
                {     
                    if (!stats.Exists(delegate(ShortStat e){ 
                        if(e.CurrentPeriod == i.ToString())
                            return true;
                        else
                            return false;}))
                    {
                        sStat = new ShortStat();
                        sStat.CurrentPeriod = i.ToString();
                        sStat.CntVisitors = 0;
                        stats.Add(sStat);
                    }
                }
```

Permalänk: https://www.webforum.nu/p/2066817

## #5 — emission, 2007-12-30T01:08Z

Helt OK. En annan variant är att använda ett Dictionary (rent tekniskt kan man även tänka sig en override av Equals och GetHashCode, men det hade vait fel i detta fall)

```
Dictionary<string,ShortStat> stats = new Dictionary<string,ShortStat>();
ShortStat sStat;

sStat = new ShortStat;
sStat.CntVisitors = 123;
sStat.CurrentPeriod = "2006"; //Varför sträng?
stats.Add(sStat.CurrentPeriod,sStat);

sStat = new ShortStat;
sStat.CntVisitors = 456;
sStat.CurrentPeriod = "2008";
stats.Add(sStat.CurrentPeriod,sStat);

int startYear = 2006;
int endYear = 2008;

for (int i = startYear; i <= endYear; i++)
{
       if(!stats.ContainsKey(i.Tostring())
       {
            sStat = new ShortStat();
            sStat.CurrentPeriod = i.ToString();
            sStat.CntVisitors = 0;
            stats.Add(sStat.CurrentPeriod,sStat);
        }
}
```

Permalänk: https://www.webforum.nu/p/2066824

## #6 — doggelito, 2007-12-30T10:15Z

Coolt! Tack för tipset! :)

> **emission skrev:**
>
> //Varför sträng?

För att klassen ShortStat fylls med olika perioder, per år/månad/vecka/dag
Ex. om jag vill se besökare per vecka så ser CurrentPeriod ut: "200714" (för vecka 14 2007)
Det är förvisso bara tal här också så jag skulle kunna använda en int men det känns som om det kvittar! 
Och säkert kan man lösa det hela på ett annat snyggare sätt!?

Permalänk: https://www.webforum.nu/p/2066841

## #7 — doggelito, 2007-12-30T12:36Z

> **doggelito skrev:**
>
> För att klassen ShortStat fylls med olika perioder, per år/månad/vecka/dag
> Ex. om jag vill se besökare per vecka så ser CurrentPeriod ut: "200714" (för vecka 14 2007)
> Det är förvisso bara tal här också så jag skulle kunna använda en int men det känns som om det kvittar!
> Och säkert kan man lösa det hela på ett annat snyggare sätt!?

Brmf, så länge höll det!   :e 
Fått bygga om lite, detta blir nog bättre!   :) 

```
    public class ShortStat
    {
        private int _cntVisitors;
        private int _currentYear;
        private int _currentMonth;
        private int _currentWeek;
        private int _currentDay;

        public int CntVisitors
        {
            get { return _cntVisitors; }
            set { _cntVisitors = value; }
        }

        public string CurrentYear
        {
            get { return _currentYear; }
            set { _currentYear = value; }
        }
        
        public int CurrentMonth
        {
            get { return _currentMonth; }
            set { _currentMonth = value; }
        }

        public int CurrentWeek
        {
            get { return _currentWeek; }
            set { _currentWeek = value; }
        }

        public int CurrentDay
        {
            get { return _currentDay; }
            set { _currentDay = value; }
        }
    }
```

Permalänk: https://www.webforum.nu/p/2066870

## #8 — Gladh, 2007-12-30T13:45Z

> **doggelito skrev:**
>
> Brmf, så länge höll det!  
> Fått bygga om lite, detta blir nog bättre!

Varför inte bara spara undan ett datum och så kan du utifrån det hämta allt det du vill, betydligt enklare och smidigare...

\- M

Permalänk: https://www.webforum.nu/p/2066881

## #9 — doggelito, 2007-12-30T15:18Z

> **Gladh skrev:**
>
> Varför inte bara spara undan ett datum och så kan du utifrån det hämta allt det du vill, betydligt enklare och smidigare...

Jag tror inte det går. Eller?!

Om man tar månader tex. så ser SP:n ut så här:

```
ALTER PROCEDURE [dbo].[Stat_GetMonthUniqueVisitors]
	@StartDate datetime = NULL,
	@EndDate datetime = NULL
AS
BEGIN
	SET NOCOUNT ON;

	SELECT SUM(CntVisitors) AS CntVisitors, Period='month', YEAR(CurrentDate) AS CurrentYear, 
		MONTH(CurrentDate) AS CurrentMonth, CurrentWeek=0, CurrentDay=0
	FROM vw_Stat_UniqueVisitors
	WHERE CurrentDate BETWEEN COALESCE(@StartDate, CurrentDate) AND COALESCE(@EndDate, CurrentDate)
	GROUP BY YEAR(CurrentDate), MONTH(CurrentDate)
	ORDER BY YEAR(CurrentDate), MONTH(CurrentDate)
END
```

Jag grupperar alltså på året samt månad.
Om jag skulle ha ett datum istället, hur grupperar jag då? och vilket datum returnerar jag?

Resultatet ska bli detta om jag skickar in start- och slutdatum från september till december:

september 2007    323
oktober 2007        274
november 2007     445
december 2007     723

Permalänk: https://www.webforum.nu/p/2066901

## #10 — Gladh, 2007-12-31T00:25Z

Jag tänkte mer på att byta ut

```
       private int _currentYear;
        private int _currentMonth;
        private int _currentWeek;
        private int _currentDay;
```

till ett datum, för du kan ju från detta datum plocka ut allt det du vill, alltså år, dag, månad, vecka...

\- M

Permalänk: https://www.webforum.nu/p/2067039

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/167658-söka-och-lägga-till-i-lista
