linq to EF怎么实现in和left join效果。

MM510 2010-08-13 03:18:24
linq to EF怎么实现in和left join效果。

备注:linq to EF有区别于linq to sql
不能用 string[].Contains,会报异常(而且我这个是做为条件传进来的,也就是数组不知道是多少个items)

我两个表没有建外键,而且好像linq to EF也不支持DefaultIfEmpty来实现left join。

参考支持方法:http://msdn.microsoft.com/en-us/library/bb738638.aspx

我在想,要是什么都不支持,我用它干个屁啊。。

欢迎指教
...全文
1850 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
webdiyer 2010-08-16
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 mm510 的回复:]
我的怎么报错。。。我的是直接传一个string[]数组不行啊。。

第二个,没有建外键好像是不行的啊。。
[/Quote]
什么错?代码呢?
用join肯定要有外键的,没有当然不行
MM510 2010-08-16
  • 打赏
  • 举报
回复
up,没解决啊。。谁帮忙看下24楼的。
MM510 2010-08-15
  • 打赏
  • 举报
回复
支持楼主。
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 x363961461 的回复:]
其实linq to sql类建好了,关系模型搭好 你就可以不用掌握复杂的LIQN语法。
也可以快速上手
访问起来非常迅速,程序中都不用写 join之类的语法


C# code

misoshu = rw.MiaoShu;
jierenwuid = rw.USER.Name;
farenwuid = rw.quest.USER.Name;
mokuai = rw.quest.M……
[/Quote]

访问起来非常之快 对这句表示质疑,都知道LINQ是通过对底层的数据访问容器进行了类型封装,再快也绝对快不过最底层的数据访问容器。当然,LINQ在大多数应用中,性能还是可以接受的,毕竟方便,让BLL层的开发人员更加方便,甚至不需要去深究数据库的结构
owenxin26 2010-08-14
  • 打赏
  • 举报
回复
你给的那篇msdn文章已经过时了。

参考这个吧
http://msdn.microsoft.com/en-us/library/bb738550.aspx
bancxc 2010-08-14
  • 打赏
  • 举报
回复
left join 可以用 DefaultIfEmpty实现 .
MM510 2010-08-13
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 webdiyer 的回复:]
第一个:Contains没有问题,我就这样用,比如:
using(var db=new MyDataEntities()){
List<Product> prods=db.Products.Where(p=>(from s in db.Sales select s.ProductId).Contains(p.ProductId));
}

第二个问题:用Include,比如:
usin……
[/Quote]

我的怎么报错。。。我的是直接传一个string[]数组不行啊。。

第二个,没有建外键好像是不行的啊。。
yajun_snow 2010-08-13
  • 打赏
  • 举报
回复
left outer



List<TechnicalGuideModelObj> x = (from z in _list
join j in db.drawings
on z.NTK_No equals j.NTK_No into k

join i in db.photos
on z.NTK_No equals i.NTK_No into l

from j in k.DefaultIfEmpty()
from i in l.DefaultIfEmpty()
select new TechnicalGuideModelObj(z)
webdiyer 2010-08-13
  • 打赏
  • 举报
回复
第一个:Contains没有问题,我就这样用,比如:
using(var db=new MyDataEntities()){
List<Product> prods=db.Products.Where(p=>(from s in db.Sales select s.ProductId).Contains(p.ProductId));
}

第二个问题:用Include,比如:
using(var db=new MyDataEntities()){
List<Product> prods=db.Products.Include("Category").ToList();
}

还要不懂的,google即可,不用求人
wisdonlz 2010-08-13
  • 打赏
  • 举报
回复
说它不好用是因为还不够了解它
studentliudong 2010-08-13
  • 打赏
  • 举报
回复
linq只是瞟了一眼
loveyan924 2010-08-13
  • 打赏
  • 举报
回复
没接触过,,,,,,,,,,,,,,,

友情绑定,,,,,,,,,,,,,,,,,,,,,,,
x363961461 2010-08-13
  • 打赏
  • 举报
回复
其实linq to sql类建好了,关系模型搭好 你就可以不用掌握复杂的LIQN语法。
也可以快速上手
访问起来非常迅速,程序中都不用写 join之类的语法


misoshu = rw.MiaoShu;
jierenwuid = rw.USER.Name;
farenwuid = rw.quest.USER.Name;
mokuai = rw.quest.MODE.MoKuai;

wuyq11 2010-08-13
  • 打赏
  • 举报
回复
var query = from d in edm.Order_Details
join order in edm.Orders
on d.OrderID equals order.OrderID
select new
{
OrderId = order.OrderID,
ProductId = d.ProductID
};
LINQ to Entities "In"
米娜Rose 2010-08-13
  • 打赏
  • 举报
回复
帮顶!顺便接个分!
Aquarius娜吖 2010-08-13
  • 打赏
  • 举报
回复
没接触过linq.
帮顶!!!
zhubo006 2010-08-13
  • 打赏
  • 举报
回复
Peter200694013 2010-08-13
  • 打赏
  • 举报
回复

LinQ只懂一点点
xinv19shi 2010-08-13
  • 打赏
  • 举报
回复
不明白!!
jrl5365 2010-08-13
  • 打赏
  • 举报
回复
加载更多回复(8)
DNetORM源码 源码描述: 一、源码介绍 1、DNetORM 是一款基于.net的轻量级的、轻配置的ORM框架,核心代码只有100K大小,支持SQLSERVER、MYSQL、ORACLE数据库,DNetORM的核心思想是,将最接近原生的C#代码映射出最符合场景的sql语句,从而最大程度提升开发效率。 2、为什么要开发一款orm框架,笔者在开发的这些年里,使用了很多框架,有第三方的譬如mybatis、nhibernate、ef等等,但是它们都不符合我的开发习惯,首先我喜欢轻配置,不喜欢将大量的sql语句写在配置文件里,也不喜欢将实体映射关系写在配置文件里,所以像mybatis、nhibernate这种重配置的orm我并不喜欢,EF算是一个功能强大的框架,但是EF也有一些缺陷,过于笨重,另外EF对于mysql、oracle的支持并不友好。另外还有一些其他框架接口封装的不友好、要么写法过于繁琐、要么接口不清晰,这些因素都是促使我写一个符合我的开发场景的orm 3、DNetORM使用起来非常简单,DNetORM拒绝封装过多的方法,这会造成使用的难度,只是封装了增删改查基本常用的一些方法,所以使用起来会非常简单。 4、DNetORM对于多表的联查进行了常规的封装支持了LEFT JOIN, INNER JOIN ,GROUP BY , ORDER BY, WHERE,对于复杂的写法,建议使用DNetORM提供的SQL查询接口,我们在开发中使用orm是为了提升开发效率,节省开发时间,这是为什么使用orm的目的,orm不是为了避免使用sql,实际开发中有很多查询语句会很复杂,如果依赖orm,首先orm即使支持的话也会写的很复杂,并不直观,以往有开发的筒子们在用linq实现相同的复杂一点的sql的时候,写个sql也就是5分钟,但是为了实现linq的写法写了半小时,还写的不正确,所以这些都是违背开发精神的。所以ORM是一个开发工具,它的出现就是为了节省开发时间、提升开发效率,使用orm可以帮你解决增删改的繁杂琐事,在查询上,orm帮你处理了大部分的单表查询,在多表的查询上,orm帮你处理简单的多表查询,帮你最快的获取数据,至于复杂的sql查询,直接使用sql查询接口。也许这种做法更加合理。 二、注意事项 1、开发环境为Visual Studio 2015,使用.net 4.0开发。

62,072

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧