(从初始测试开始),此功能正常运行。
由于方法链接是我的首选格式,因此我尝试找出等效的方法链接,但是没有运气。有任何想法吗?

var data = (from p in db.Persons
            from c in db.Companies
            where c.CompanyName == companyName && p.CompanyId == c.CompanyId
            select p)
            .Select(p => new
            {
                Id = p.PersonId,
                Name = string.Format("{0} {1}", p.FirstName, p.LastName)
            });


谢谢,
-埃德

最佳答案

我将对查询重新排序以首先过滤掉companyName,然后执行连接。这将允许您使用以下流利的语法:

var query = db.Companies.Where(c => c.CompanyName == companyName)
              .Join(db.Persons, c => c.CompanyId, p => p.CompanyId, (p, c) => p)
              .Select(p => new
              {
                  Id = p.PersonId,
                  Name = string.Format("{0} {1}", p.FirstName, p.LastName)
              });


话虽如此,有些查询使用查询语法编写起来要容易得多,那么为什么要限制自己呢?复杂的联接通常在查询语法上更好,并且还可以将SelectMany联接格式与from ... from...而不是join p in ... on x equals y一起使用。有关更多详细信息,请参见此问题:When to prefer joins expressed with SelectMany() over joins expressed with the join keyword in Linq

关于c# - 方法链接等效吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4115452/

10-13 06:13