namespace ConsoleApp.Model
{
public class Customer
{
public string ID { get; set; }
public string City { get; set; }
public string Country { get; set; }
public string Region { get; set; }
public string Sales { get; set; }
public override string ToString()
{
return "ID:" + ID + "City:" + City + "Country:" + Country + "Region:" + Region + "Sales:" + Sales;
}
}
}
namespace ConsoleApp.Model
{
public class GuestInfo
{
public string Name { set; get; }
public int Age { set; get; }
public string Tel { set; get; }
public List<string> TelTable { set; get; }
}
}
namespace ConsoleApp.Model
{
public class GuestTitle
{
public string Name { get; set; }
public string Tilte { get; set; }
}
}
namespace ConsoleApp.Model
{
public class Order
{
public string ID { get; set; }
public decimal Amount { get; set; }
}
}
namespace ConsoleApp
{
internal class Program
{
static void Main(string[] args)
{
List<Customer> customers = new List<Customer>
{
new Customer {ID ="A",City ="New York",Country ="USA",Region ="North America",Sales ="9999"},
new Customer {ID ="B",City ="New York",Country ="USA",Region ="North America",Sales ="9999"},
new Customer {ID ="C",City ="XiAn",Country ="China",Region ="Asia",Sales ="7777"},
new Customer {ID ="D",City ="New York",Country ="USA",Region ="North America",Sales ="9999"},
new Customer {ID ="E",City ="BeiJing",Country ="China",Region ="Asia",Sales ="8888"},
new Customer {ID ="F",City ="New York",Country ="USA",Region ="North America",Sales ="9999"}
};
string[] names = { "Alono", "Zheng", "Yuan", "Song", "Simle", "Hsieh", "Small", "She", "Sza", "Sam", "Fa", "Iyl" };
var queryResults =
customers.Select(c => new { c.City, c.Country, c.Sales })
.Where(c => c.City == "XiAn");
foreach (var item in queryResults)
{
Console.WriteLine(item);
}
var queryResults1 = customers.Select(c => c.Region).Distinct().ToList();
var queryResults2 =
(from c in customers
select c.Region).Distinct();
bool anyUSA = customers.Any(c => c.Country == "USA");
bool allUSA = customers.All(c => c.Country == "USA");
var queryResult3 =
from n in customers
where n.Region == "Asia"
orderby n.Region, n.Country descending, n.City
select n;
var queryResult4 =
customers.OrderBy(c => c.Region)
.ThenByDescending(c => c.Country)
.ThenByDescending(c => c.City)
.Select(c => new { c.ID, c.Region, c.Country, c.Sales });
var queryResults5 =
from c in customers
group c by c.Region into cg
select new { TotalSales = cg.Sum(c => long.Parse(c.Sales)), Region = cg.Key };
var orderedResults =
from cg in queryResults5
orderby cg.TotalSales descending
select cg;
foreach (var item in orderedResults)
Console.WriteLine(item.TotalSales + "\t:" + item.Region);
foreach (var item in queryResults5)
{
Console.WriteLine(item);
}
foreach (var item in orderedResults.Take(2))
{
Console.WriteLine(item.TotalSales + "\t:" + item.Region);
}
List<Order> orders = new List<Order>
{
new Order { ID = "A", Amount = 100 },
new Order { ID = "B", Amount = 200 },
new Order { ID = "H", Amount = 300 }
};
var customersIDs =
from c in customers
select c.ID;
var ordersIDs =
from o in orders
select o.ID;
var customersWithOrders =
customersIDs.Intersect(ordersIDs);
foreach (var item in customersWithOrders)
{
Console.WriteLine(item);
}
Console.WriteLine("=====================");
var ordersNoCustomers = ordersIDs.Except(customersIDs);
foreach (var item in ordersNoCustomers)
{
Console.WriteLine(item);
}
Console.WriteLine("=====================");
var allCustomersOrders = ordersIDs.Union(customersIDs);
foreach (var item in allCustomersOrders)
{
Console.WriteLine(item);
}
var queryResults9 =
from c in customers
join o in orders on c.ID equals o.ID
select new { c.ID, c.City, SalesBefore = c.Sales, NewOrder = o.Amount, SalesAfter = c.Sales + o.Amount };
foreach (var item in queryResults9)
{
Console.WriteLine(item);
}
List<GuestInfo> list = GetGuestInfos();
Console.WriteLine("into 用于 group 子句的分组时刻");
var query =
from guest in list
group guest by guest.Name.Substring(0, 1) into grgust
orderby grgust.Key descending
select grgust;
foreach (var guest in query)
{
Console.WriteLine(string.Format("分组键:{0}\n", guest));
foreach (var g in guest)
{
Console.WriteLine(string.Format("{0} 电话:{1}", g.Name, g.Tel));
Console.WriteLine("=================================");
}
}
Console.WriteLine("\ninto 用于Select子句的投影时刻");
var titleList = GetTitleList();
var query2 =
from guest in list
join title in titleList
on guest.Name equals title.Name
into tgroup
select new { Name = guest.Name, Titles = tgroup };
foreach (var g in query2)
{
Console.WriteLine(g.Name);
foreach (var g2 in g.Titles)
{
Console.WriteLine(string.Format("{0}", g2.Tilte));
}
}
Console.WriteLine("\n左外部联接");
var query3 =
from guest in list
join title in titleList
on guest.Name equals title.Name
into tgroup
from subtitle in tgroup.DefaultIfEmpty()
select new { Name = guest.Name, Title = (subtitle == null ? "空缺" : subtitle.Tilte) };
foreach (var g in query3)
{
Console.WriteLine(string.Format("{0}{1}", g.Title, g.Name));
}
var gList = GetGList();
var queryResult =
from guest in gList
let g = guest.Name.Substring(0, 1)
where g == "肖" || g == "董"
select guest;
foreach (var g in queryResult)
{
Console.WriteLine(string.Format("{0} 年龄:{1} 电话:{2}", g.Name, g.Age, g.Tel));
}
Console.ReadLine();
}
private static int[] GenerateLostofNumbers(int count)
{
Random generator = new Random(1);
int[] result = new int[count];
for (int i = 0; i < count; i++)
{
result[i] = generator.Next();
}
return result;
}
private static List<GuestInfo> GetGuestInfos()
{
return new List<GuestInfo>()
{
new GuestInfo
{
Name = "萧玉霜",
Age = 17,
Tel = "053*-985690**" },
new GuestInfo
{
Name = "萧玉若",
Age = 21,
Tel = "035*-120967**"
},
new GuestInfo
{
Name = "徐长今",
Age = 18,
Tel = "039*-967512**"
},
new GuestInfo
{
Name = "徐芷晴",
Age = 24,
Tel = "089*-569832**"
}
};
}
private static List<GuestTitle> GetTitleList()
{
List<GuestTitle> titleList = new List<GuestTitle>()
{
new GuestTitle{ Name = "林晚荣", Tilte = "金刀汉王"},
new GuestTitle{ Name = "林晚荣", Tilte = "天下第一丁"},
new GuestTitle{ Name = "肖青漩", Tilte = "出云公主"},
new GuestTitle{ Name = "董巧巧", Tilte = "酒店CEO"},
new GuestTitle{ Name = "董巧巧", Tilte = "乖巧人儿"}
};
return titleList;
}
private static List<GuestInfo> GetGList()
{
return new List<GuestInfo>() { new GuestInfo { Name = "林晚荣", Age = 21, Tel = "026*-888888**" }, new GuestInfo { Name = "肖青漩", Age = 21, Tel = "017*-876543**" }, new GuestInfo { Name = "董巧巧", Age = 19, Tel = "029*-981256**" }, };
}
}
}