|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
[C# 2.0]Implementazione di List<T>.Sort e .FindAll
Buonasera a tutti
Problemino della nottata: Devo implementare dei metodi definiti in un'interfaccia, in particolare: Codice:
List<T> SortedByList(string dataPropertyName); List<T> GetByName(string dataPropertyName, string filter); Codice:
//interfaccia
List<T> GetEntityList();
//classe : interfaccia
List<T> GetEntityList()
{
blablaCode;
return someList;
}
//.....
List<Pippo> lista = classe.GetEntityList();
lista.FindAll(delegate(Pippo p1)
{
return p1.SomeProperty.Contains(someString);
});
//e fare lo stesso per Sort(delegate (Pippo p1, Pippo p2) { return CompareTo etc....
vabbè... già è tantissimo che mi pagano per imparare ad ogni modo, non riesco a comprendere come implementare l'interfaccia in una classe generica, per es.: Codice:
List<T> GetByName(string dataPropertyName, string filter)
{
List<T> filteredList = base.GetEntityList();
filteredList.FindAll(
delegate(typeof(T))
{
return typeof(T).GetProperty(dataPropertyName) <- qui il mio pensare si ferma...
});
return filteredList;
}
Grazie a tutti RaouL.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
La notte porta consiglio (spero che sia quello giusto....)
Codice:
public List<T> GetByName(string dataPropertyName, string filter)
{
List<T> filteredList = base.GetAll();
PropertyInfo pInfo = typeof(T).GetProperty(dataPropertyName);
filteredList.FindAll(
delegate(T t)
{
return pInfo.Name.Contains(filter);
});
return filteredList;
}
EDIT: Ho sognato male evidentemente
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
Ultima modifica di RaouL_BennetH : 18-06-2010 alle 09:08. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
up
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Ho finalmente risolto mediante un Predicate<T>
Codice:
private string dataPropertyName;
private string filter;
public List<T> FilterdList(string dataPropertyName, string filter)
{
this.dataPropertyName = dataPropertyName;
this.filter = filter;
List<T> filteredList = baseList.Getall();
return filteredList.FindAll(PredicateTest);
}
private bool PredicateTest(T obj)
{
return obj.GetType().GetProperty(dataPropertyName).GetValue(obj, null).ToString().Contains(filter);
}
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
Ultima modifica di RaouL_BennetH : 19-06-2010 alle 13:46. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:28.



















