如何用方法语法编写查询

本文关键字:查询 语法 何用 方法 | 更新日期: 2023-09-27 17:53:14

如果类PrinterObservableCollection称为Printers
并且每个CCD_ 4包含属性CCD_ 5(bool(和CCD_
如何将以下LINQ查询从查询语法转换为方法语法?

string[] printerListing = 
    (from p in Printers
    where p.IsSelected
    select p.Index.ToString()).ToArray();

我提出了以下内容,但它只返回查询中的第一个Printer(为了可读性,拆分为多行(:

var printers2 =
    Printers.Where(p => p.IsSelected)
    .FirstOrDefault()
    .Index.ToString().ToArray();

如何用方法语法编写查询

使用.Select((,其功能类似于查询语法中的select关键字。

var printers2 = Printers
                    .Where(p => p.IsSelected)
                    .Select(x => x.Index.ToString())
                    .ToArray();
string[] printerListing = 
    (from p in Printers
     where p.IsSelected
     select p.Index.ToString()).ToArray();

您可以简单地从查询结束到开始一步一步地完成此操作:

  1. ToArray();停留:

    ....ToArray();
    
  2. select:

    ....Select(p => p.Index.ToString()).ToArray();
    
  3. where:

    ....Where(p => p.IsSelected).Select(p => p.Index.ToString()).ToArray();        
    
  4. from(来源(:

    Printers.Where(p => p.IsSelected).Select(p => p.Index.ToString()).ToArray();   
    

最后:

string[] printerListing = 
               Printers
                   .Where(p => p.IsSelected)
                   .Select(p => p.Index.ToString())
                   .ToArray();   

事实上,它也以相反的方式工作,但有时相反的顺序更容易遵循。

您使用了FirstOrDefault(),因此它将返回第一个元素,其中isSelected=true。使用

var printers2 = Printers.Where(p => p.IsSelected)
                        .Select(x => x.Index.ToString).ToArray();