Archive

Posts Tagged ‘generics’

How to filter in generics in .net 2.0

November 30, 2009 Leave a comment

We have lambda expressions in .net 3.5 to filter in generics. but in .net 2.0 we have predicates to filter. following example show the use of predicate to filter in generic list.

/// <summary>
/// An example to show generic predicates
/// </summary>

[Serializable]

public class myProduct
{
/// <summary>
/// ProductCategory
/// </summary>

public enum ProductCategory
{
General = 1,
Speciality = 2
}

private string _Name = string.Empty,
_ProductID = string.Empty;

private ProductCategory _Category;

public string Name
{
get { return _Name; }
set { _Name = value; }
}

public string ProductID
{
get { return _ProductID; }
set { _ProductID = value; }
}

public ProductCategory Category
{
get { return _Category; }
set { _Category = value; }
}

public myProduct() { }

#region “Predicate for Filters”

/// <summary>
/// Predicate for General Products
/// </summary>
/// <param name=”p”></param>
/// <returns></returns>

private static bool GeneralProducts(myProduct p)
{
return (p.Category == myProduct.ProductCategory.General);
}

/// <summary>
/// Predicate for Speciality Products
/// </summary>
/// <param name=”p”></param>
/// <returns></returns>

private static bool SpecialityProducts(myProduct p)
{
return (p.Category == myProduct.ProductCategory.Speciality);
}

/// <summary>
/// Filter and return General Products
/// </summary>
/// <param name=”productList”></param>
/// <returns></returns>

public static List<myProduct> GetGeneralProducts(List<myProduct> productList)
{
return productList.FindAll(GeneralProducts);
}

/// <summary>
/// Filter and return Speciality Products
/// </summary>
/// <param name=”productList”></param>
/// <returns></returns>

public static List<myProduct> GetSpecialityProducts(List<myProduct> productList)
{
return productList.FindAll(SpecialityProducts);
}

#endregion “Predicate for Filters”

/// <summary>
/// Anonymous delegate to filter
/// </summary>
/// <param name=”productList”></param>
/// <param name=”nameLike”></param>
/// <returns></returns>

public static List<myProduct> GetProductsNamedLike(List<myProduct> productList, string nameLike)
{
return productList.FindAll(delegate(myProduct p) { return p.Name.Contains(nameLike); });
}
}

Categories: ASP.NET Tags: ,