2009-10-06 5 views
0

Ma colonne db est une liste séparée par des virgules d'ID de catégorie.db colonne est une liste séparée par des virgules, comment charger mieux paresseux une propriété de la liste publique?

J'ai une propriété publique dans ma classe qui est:

List<int> CategoryIDs {get;set;} 

Je veux charge en quelque sorte paresseux cette propriété, que lorsqu'il est utilisé, il va diviser la colonne db par sa virgule (son une virgule liste séparée des identifiants comme: 1,2,343,2342).

Il va ensuite initialiser une liste.

Répondre

1

quelque chose comme ça:

List<int> categoryIds; 

public List<int> CategoryIds 
{ 
    get 
    { 
     if (this.categoryIds == null) 
     { 
      this.categoryIds = new List<int>(); 
      this.categoryIds.AddRange(
       getIds() 
       .Split(',') 
       .Select(s => Convert.ToInt32(s))); 
     } 
     return this.categoryIds; 
    } 
} 

getIds est la fonction qui renvoie la chaîne de ids.

1

Quelque chose comme ça?

private List<int> categoryIDs = null; 
List<int> CategoryIDs 
{ 
    get 
    { 
     if (categoryIDs == null) 
     { 
      categoryIDs = new List<int>(); 
      GetCategoryList().Split(',').ToList().ForEach(id => categoryIDs.Add(Convert.ToInt32(id))); 
     } 
     return(categoryIDs); 
    } 
    set 
    { 
     List<string> stringList = value.ConvertAll<string>(i => i.ToString()); 
     SetCategoryList(String.Join(",", stringList.ToArray())); 
    } 
} 

public string GetCategoryList() 
{ 
    throw new NotImplementedException(); 
} 

public void SetCategoryList(string categoryList) 
{ 
    throw new NotImplementedException(); 
} 

Où GetCategoryList et SetCategoryList sont les fonctions de lecture/mise à jour réellement les données sur la base de données.

0
private List<int> _CategoryIDs; 

public IList<int> CategoryIDs 
{ 
    get 
    { 
     if (_CategoryIDs == null) 
     { 
      _CategoryIDs = GetCommaSeparatedFieldFromDB() 
       .Split(',') 
       .Select(x => int.Parse(x)) 
       .ToList(); 
     } 
     return _CategoryIDs; 
    } 
} 
Questions connexes