使用英语阅读

通过


构建投影

下面的示例演示如何将 C# 中的 select 语句和 Visual Basic 中的 Select 语句与其他功能结合使用以构建查询投影。

示例 1

以下示例使用 Visual Basic 中的 Select 子句(在 C# 中为 select 子句)返回由 Customers 的联系人姓名组成的序列。

C#
var nameQuery =
    from cust in db.Customers
    select cust.ContactName;

示例 2

以下示例使用 Visual Basic 中的 Select 子句(在 C# 中为 select 子句)和匿名类型返回由 Customers 的联系人姓名和电话号码组成的序列。

C#
var infoQuery =
    from cust in db.Customers
    select new { cust.ContactName, cust.Phone };

示例 3

以下示例使用 Visual Basic 中的 Select 子句(在 C# 中为 select 子句)和匿名类型返回由雇员的姓名和电话号码组成的序列。 在产生的序列中,FirstNameLastName 字段组合成单个字段 (Name),HomePhone 字段重命名为 Phone

C#
var info2Query =
    from emp in db.Employees
    select new
    {
        Name = emp.FirstName + " " + emp.LastName,
        Phone = emp.HomePhone
    };

示例 4

下面的示例使用 Visual Basic 中的 Select 子句(在 C# 中为 select 子句)和匿名类型返回由所有 ProductID 和名为 HalfPrice 的计算所得的值组成的序列。 此值设置为 UnitPrice 的 1/2。

C#
var specialQuery =
    from prod in db.Products
    select new { prod.ProductID, HalfPrice = prod.UnitPrice / 2 };

示例 5

下面的示例使用 Visual Basic 中的 Select 子句(在 C# 中为 select 子句)和一个条件语句返回由产品名和产品可用性组成的序列。

C#
var prodQuery =
    from prod in db.Products
    select new
    {
        prod.ProductName,
        Availability =
            prod.UnitsInStock - prod.UnitsOnOrder < 0
        ? "Out Of Stock" : "In Stock"
    };

示例 6

下面的示例使用 Visual Basic Select 子句(在 C# 中为 select 子句)和一个已知类型 (Name) 返回由雇员的姓名组成的序列。

C#
public class Name
{
    public string FirstName = "";
    public string LastName = "";
}

 void empMethod()
 {
 Northwnd db = new Northwnd(@"c:\northwnd.mdf");
 var empQuery =
     from emp in db.Employees
     select new Name
     {
         FirstName = emp.FirstName,
         LastName = emp.LastName
     };
}

示例 7

下面的示例使用 Visual Basic 中的 SelectWhere(在 C# 中为 selectwhere)返回由位于伦敦的客户的联系人姓名组成的筛选序列。

C#
var contactQuery =
    from cust in db.Customers
    where cust.City == "London"
    select cust.ContactName;

示例 8

下面的示例使用 Visual Basic 中的 Select 子句(在 C# 中为 select 子句)和匿名类型返回有关客户的数据的成形子集。

C#
var custQuery =
    from cust in db.Customers
    select new
    {
        cust.CustomerID,
        CompanyInfo = new { cust.CompanyName, cust.City, cust.Country },
        ContactInfo = new { cust.ContactName, cust.ContactTitle }
    };

示例 9

下面的示例使用嵌套查询返回以下结果:

  • 由所有订单及其对应的 OrderID 组成的序列。

  • 由订单中具有折扣的项组成的子序列。

  • 不含运费时节省的资金数额。

C#
var ordQuery =
    from ord in db.Orders
    select new
    {
        ord.OrderID,
        DiscountedProducts =
            from od in ord.OrderDetails
            where od.Discount > 0.0
            select od,
        FreeShippingDiscount = ord.Freight
    };

请参阅