方法链接相同呢? [英] Method Chaining equivalent?

查看:138
本文介绍了方法链接相同呢?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

结果
这是正确的(从最初的测试)工作。结果
由于方法链是我的首选格式,我试图找出链等效方法,但没有运气。任何想法?



  VAR数据=(从db.Persons 
p从C在db.Companies
,其中c.CompanyName ==&的companyName功放;&安培; p.CompanyId == c.CompanyId
选择p)
。选择(p =>新建
{
n = p.PersonId,
名称=的String.Format({0} {1},p.FirstName,p.LastName)
});



谢谢,结果
编者注


< DIV CLASS =h2_lin>解决方案

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

  VAR的查询= db.Companies.Where(C => c.CompanyName ==的companyName)
。加入(db.Persons中,c => c.CompanyId,p值=> p.CompanyId,(p,C)=指p)
。选择(p值= >新建
{
n = p.PersonId,
名称=的String.Format({0} {1},p.FirstName,p.LastName)
} );



话虽如此,一些查询更容易很多查询语法来写,何必收缩自己?复杂的连接通常是查询语法更好,你也可以得到使用的好处的SelectMany 从...从... 加入格式C $的c>来代替加入p在...上x等于是。看到这个问题的更多细节:时候喜欢用联接的SelectMany()在联接在LINQ的 join关键字表示表示<。 / p>


This is working properly (from initial testing).
Since method chaining is my preferred format, I've tried to figure out what the method chaining equivalent is, but with no luck. Any ideas?

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)
            });

Thanks,
--Ed

解决方案

I would reorder the query a bit to filter out the companyName first, then perform the join. This would allow you to use this fluent syntax:

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)
              });

Having said that, some queries are a lot easier to write in query syntax, so why constrict yourself? Complicated joins are usually nicer in query syntax and you also get the benefit of using SelectMany join format with from ... from... instead of join p in ... on x equals y. See this question for more details: When to prefer joins expressed with SelectMany() over joins expressed with the join keyword in Linq.

这篇关于方法链接相同呢?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆