Csharp/CSharp Tutorial/LINQ/Filter — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
Admin (обсуждение | вклад) м (1 версия) |
(нет различий)
|
Текущая версия на 15:18, 26 мая 2010
Содержание
Calling the Common Library Filter Method
<source lang="csharp">using System.Collections; using System; public delegate bool IntFilter(int i); public class MainClass {
public static void Main() { int[] nums = { 1, 2, 3, 4, 5, 6}; int[] oddNums = FilterArrayOfInts(nums, IsOdd); foreach (int i in oddNums) Console.WriteLine(i); } public static bool IsOdd(int i) { return ((i & 1) == 1); } public static int[] FilterArrayOfInts(int[] ints, IntFilter filter) { ArrayList aList = new ArrayList(); foreach (int i in ints) { if (filter(i)) { aList.Add(i); } } return ((int[])aList.ToArray(typeof(int))); }
}</source>
Calling the Filter Method with a Lambda Expression
<source lang="csharp">using System; using System.Collections; public delegate bool IntFilter(int i); public class MainClass {
public static int[] FilterArrayOfInts(int[] ints, IntFilter filter) { ArrayList aList = new ArrayList(); foreach (int i in ints) { if (filter(i)) { aList.Add(i); } } return ((int[])aList.ToArray(typeof(int))); } public static void Main() { int[] nums = { 1, 2, 3, 4, 5}; int[] oddNums = FilterArrayOfInts(nums, i => ((i & 1) == 1)); foreach (int i in oddNums) Console.WriteLine(i); }
}</source>
Calling the Filter Method with an Anonymous Method
<source lang="csharp">using System; using System.Collections; public delegate bool IntFilter(int i); public class MainClass {
public static int[] FilterArrayOfInts(int[] ints, IntFilter filter) { ArrayList aList = new ArrayList(); foreach (int i in ints) { if (filter(i)) { aList.Add(i); } } return ((int[])aList.ToArray(typeof(int))); } public static void Main() { int[] nums = { 1, 2, 3, 4, 5, 6}; int[] oddNums = FilterArrayOfInts(nums, delegate(int i) { return ((i & 1) == 1); }); foreach (int i in oddNums) Console.WriteLine(i); }
}</source>
Use delegate to create a filter
<source lang="csharp">using System; using System.Collections; using System.Collections.Generic; using System.Text; using System.IO; using System.Reflection; using System.Linq; using System.Xml; using System.Xml.Linq; class Person {
int _id; int _idRole; string _lastName; string _firstName; public int ID { get { return _id; } set { _id = value; } } public int IDRole { get { return _idRole; } set { _idRole = value; } } public string LastName { get { return _lastName; } set { _lastName = value; } } public string FirstName { get { return _firstName; } set { _firstName = value; } }
} class Program {
static void Main(string[] args) { List<Person> people = new List<Person> { new Person { ID = 1, IDRole = 1, LastName = "A", FirstName = "B"}, new Person { ID = 2, IDRole = 2, LastName = "G", FirstName = "T"} }; Func<Person, bool> filter = delegate(Person p) { return p.ID == 1; }; var query = people .Where(filter) .Select(p => new { p.FirstName, p.LastName }); }
}</source>