webForumDet fria alternativet

Hämta en post ur en generic List

.NET

5 svar · 522 visningar · startad av Pedda

Medlem sedan juni 20006 031 inlägg
Frågan#1

Jag har en list som jag har fyllt med data ifrån en xml fil

ZPSProjects.cs (förkortad version)

public class ZPSProjects
{
    #region Private Member Variables
    private string projectID;
    ...
    #endregion
    #region Constructors
    public ZPSProjects() { }
    public ZPSProjects(string projectID, ...)
    {
        this.projectID = projectID;
	...
    }
    #endregion
    #region Public Properties

    public string ProjectID
    {
        get { return projectID; }
        set { projectID = value; }
    }
	
    ...
	
}

ZPSProjectsBLL.cs

public class ZPSProjectsBLL
{
    public List<ZPSProjects> GetProjects()
    {
        ProjectDAL dal = new ProjectDAL();
        return dal.GetProjects();
    }
}

ZPSProjectsDAL.cs (förkortad version)

public class ProjectDAL
{
    public List<ZPSProjects> GetProjects()
    {
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load(ConfigurationManager.AppSettings["URLZPSList"]);

        XmlNodeList projectID = xmlDoc.GetElementsByTagName("Project_x0020_ID");
        ...
		
	List<ZPSProjects> results = new List<ZPSProjects>();

        for (int i = 0; i < projectID.Count; ++i)
        {
            ZPSProjects zpsProjects = new ZPSProjects();

            zpsProjects.ProjectID = (projectID[i] == null) ? "" : projectID[i].InnerText;
            ...
			
	    results.Add(zpsProjects);

        }
        return results;
    }
}

Hur gör jag för att bygga ut så jag kan hämta ett specifikt projekt?
Jag har projectID eller index nummret att välja på när jag ska hämta ett projekt.

Medlem sedan jan. 20022 440 inlägg
#2

Använd linq?

var query = from r in results //din lista med ZPSProjects
		where r.ProjectID == 1 //Det du vill söka efter
		select r;

Sedan kan du ju returnera precis vad tusan du vill med.

query.ToList(); //Returnerar en liadan lista som du redan har (om du vill databinda)
query.FirstOrDefault(); //returnerar en entitet om du vill göra något specifikt med resultatet.
Medlem sedan juni 20006 031 inlägg
#3

Tyvärr, Framework 2.0 så jag kan glömma Linq

Medlem sedan jan. 20022 440 inlägg
#4

Ah ok, då får du använda de inbyggda funktionerna istället :)

Du kan söka en .NET 2.0 lista genom att hämta en enumerator för listan.

results.GetEnumerator().Current.ProjectID

Resten kan du säkert "LISTA" ut själv ;)

Medlem sedan jan. 20022 440 inlägg
#5

Tja, du kan ju loopa igenom listan också

			List<ZPSProjects> tmpList = new List<ZPSProjects>();

			foreach (ZPSProjects proj in results)
			{
				tmpList.Add(proj);
			}
Medlem sedan feb. 20041 816 inlägg
#6

Istället för en lista, kan du inte köra med hashtable eller vad det nu heter i .NET som motsvarar Map<K, V> i Java?

260 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
115 ms — ändringar (db)