May 2025
Intermediate to advanced
1086 pages
14h 54m
Chinese
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
本章将逐一介绍 LINQ 查询操作符。其中"投影 "和"连接 "两节除了作为参考外,还涵盖了一些概念领域:
投影对象层次
与Select,SelectMany,Join, 和GroupJoin
使用多个范围变量的查询表达式
本章所有示例都假定names 数组的定义如下:
string[] names = { "Tom", "Dick", "Harry", "Mary", "Jay" };
查询数据库的示例假定名为dbContext 的变量实例化为
var dbContext = new NutshellContext();
其中NutshellContext 的定义如下
public class NutshellContext : DbContext
{
public DbSet<Customer> Customers { get; set; }
public DbSet<Purchase> Purchases { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Customer>(entity =>
{
entity.ToTable("Customer");
entity.Property(e => e.Name).IsRequired(); // Column is not nullable
});
modelBuilder.Entity<Purchase>(entity =>
{
entity.ToTable("Purchase");
entity.Property(e => e.Date).IsRequired();
entity.Property(e => e.Description).IsRequired();
});
}
}
public class Customer
{
public int ID { get; set; }
public string Name { get; set; }
public virtual List<Purchase> Purchases { get; set; }
= new List<Purchase>();
}
public class Purchase
{
public int ID { get; set; }
public int? CustomerID { get; set; }
public DateTime Date { get; set; }
public string Description { get; set; }
public decimal Price { get; set; }
public virtual Customer Customer { get; set; }
}
本章中的所有示例都已预装到 LINQPad 中,同时还预装了一个具有匹配模式的示例数据库。您可以从http://www.linqpad.net 下载 LINQPad。
下面是相应的 SQL Server 表定义:
CREATE TABLE Customer ( ID int NOT NULL IDENTITY PRIMARY KEY, Name nvarchar(30) ...
Read now
Unlock full access