Linq
一、用法举例
1.In操作
代码如下(示例):
private static void QueryIn()
{
using (CodeFirstContext context = new CodeFirstContext())
{
int[] ids = new int[] {
1, 2, 3 };
var clientList1 = from c in context.Clients
where ids.Contains(c.Id)
select c;
foreach (var item in clientList1)
{
Console.WriteLine(item.ClientName);
}
var clientList2 = context.Clients.Where(c => ids.Contains(c.Id));
foreach (var item in clientList2)
{
Console.WriteLine(item.ClientName);
}
var clientList3 = context.Clients.Where(c => new string[] {
"Fisea wannfsfsf", "Ganter" }.Contains(c.ClientName));
clientList3.ToList().ForEach(c =>
{
Console.WriteLine(c.ClientName);
});
foreach (var item in clientList3)
{
Console.WriteLine(item.ClientName);
}
}
//Sql:
// SELECT
//[Extent1].[Id] AS[Id],
//[Extent1].[Name] AS[Name],
//[Extent1].[Tel] AS[Tel],
//[Extent1].[Sex] AS[Sex],
//[Extent1].[Address] AS[Address],
//[Extent1].[CreateTime] AS[CreateTime],
//[Extent1].[CreatorId] AS[CreatorId]
//FROM[dbo].[Client] AS[Extent1]
//WHERE[Extent1].[Id] IN(1, 2, 3)
}
2.分页
代码如下(示例):
private static void QueryPaging()
{
using (CodeFirstContext context = new CodeFirstContext())
{
var list = context.Clients.Where(c => new int[] {
1, 2, 3 }.Contains(c.Id))
.OrderBy(c => c.CreateTime)
.Select(c => new
{
Name = c.ClientName,
Addr = c.Address
})
.Skip(1)
.Take(3);
foreach (var item in list)
{
Console.WriteLine($"{item.Name},{item.Addr}");
}
}
//Sql:
// SELECT
//[Extent1].[Id] AS[Id],
//[Extent1].[Name] AS[Name],
//[Extent1].[Address] AS[Address]
//FROM[dbo].[Client] AS[Extent1]
//WHERE[Extent1].[Id] IN(1, 2, 3)
//ORDER BY row_number() OVER(ORDER BY[Extent1].[CreateTime] ASC)
//OFFSET 1 ROWS FETCH NEXT 3 ROWS ONLY
}
3.Like
代码如下(示例):
private static void QueryLike()
{
using (CodeFirstContext context = new CodeFirstContext())
{
var list = context.Clients.Where(c => c.Address.StartsWith("深圳") && c.ClientName.EndsWith("a"))
.Where(c => c.Tel.Contains("159"))
.OrderBy(c => c.CreateTime);
foreach (var client in list)
{
Console.WriteLine(client.ClientName);
}
}
//Sq;
// SELECT
//[Extent1].[Id] AS[Id],
//[Extent1].[Name] AS[Name],
//[Extent1].[Tel] AS[Tel],
//[Extent1].[Sex] AS[Sex],
//[Extent1].[Address] AS[Address],
//[Extent1].[CreateTime] AS[CreateTime],
//[Extent1].[CreatorId] AS[CreatorId]
//FROM[dbo].[Client] AS[Extent1]
//WHERE([Extent1].[Address] LIKE N'深圳%') AND([Extent1].[Name] LIKE N'%a') AND([Extent1].[Tel] LIKE N'%159%')
//ORDER BY[Extent1].[CreateTime] ASC
}
4.Join
代码如下(示例):
private static void QueryJoin()
{
using (CodeFirstContext context = new CodeFirstContext())
{
var list = (from o in context.Orders
join p in context.Products on o.ProId equals p.Id
where new int[] {
1, 2,