public class AsEnumerable_LINQ
{
static string ContextString = System.Configuration.ConfigurationSettings.AppSettings["ContextString"].ToString();
static DataContext context = new DataContext(ContextString);
static Table<Contact> contacts = context.GetTable<Contact>();
public static void AsEnumerable_Print()
{
IEnumerable<Contact> query = contacts.AsEnumerable().Where(con => con.FirstName.StartsWith("K"));
foreach (var item in query)
{
Console.WriteLine(item.FirstName);
}
}
public static void Cast_Print()
{
/*
* 利用Cast将IEnumerable集合中的元素转换为某种指定的类型,这样做的好处是通过提供必要的类型信息
* 可以将标准查询操作符应用于非泛型集合之上
*/
ArrayList names = new ArrayList();
names.Add("Alex");
names.Add("Jack");
names.Add("Miles");
names.Add("Hugo");
names.Add("Ben");
IEnumerable<string> query = names.Cast<string>().Select(name => name);
foreach (var item in query)
{
Console.WriteLine(item.ToString());
}
}
public static void OfType_Print()
{
ArrayList names = new ArrayList();
names.Add("Alex");
names.Add("Jack");
names.Add("Miles");
names.Add("Hugo");
names.Add("Ben");
names.Add(12);
names.Add(3);
names.Add(20);
names.Add(83);
IEnumerable<int> query = names.OfType<int>().Select(name => name);
foreach (int item in query)
{
Console.WriteLine(item.ToString());
}
}
public static void ToArray_Print()
{
var query = contacts.Select(con => con.FirstName).ToArray();
foreach (string s in query)
{
Console.WriteLine(s.ToString());
}
}
public static void ToDictionary_Print()
{
Dictionary<string, Contact> dic = contacts.ToDictionary(con => con.EmailAddress);
foreach (KeyValuePair<string,Contact> item in dic)
{
Console.WriteLine(item.Value.FirstName + " " + item.Value.LastName + " " + item.Key);
}
}
public static void ToList_Print()
{
var query = (from c in contacts
select c.FirstName).ToList();
foreach (var item in query.Take(10))
{
Console.WriteLine(item.ToString());
}
}
public static void ToLookUp_Print()
{
ILookup<string, string> lookUp = contacts.ToLookup(con => con.FirstName, con => con.MiddleName + " " + con.LastName);
foreach (IGrouping<string,string> item in lookUp)
{
Console.WriteLine(item.Key);
foreach (var i in item)
{
Console.WriteLine(" " + i.ToString());
}
}
}
}