Tag: join

如何使用LINQ连接多个表

我正试图用LINQ连接三个表。 我的SQL工作如下: Select j.Id, u.FirstName , u.LastName, u.Role From Job j left join JobTranslator as jt on j.Id = jt.JobId left join JobRevisor as jr on j.Id = jr.JobId left join [User] as u on jt.UserId = u.Id OR jr.UserId = u.Id Where u.Id = someID; 我可以使用下面的两个连接来使用它: IQueryable jobs = from j in _db.Jobs join […]

LINQ加入两个表

我有两个表说A和B.一个cols是GUID,someintVar,someMoreIntvar B col是GUID,someItemNO,SomeItemDesc 现在对于一个GUID,我在表A中只有一行。但是对于相同的GUID,我可以有多行。 现在我想基于GUID查询数据库并选择类中的值。 该类将具有一个列表,该列表将包含来自第二个表的不同行。 我该怎么做? 现在我根据该GUID的第二个表中有多少行在结果中获取了很多项。 var itemColl = from p in db.A join item in db.B on p.CardID equals item.CardID where p.CardID == “some GUID” select new { p.CardID, p.secondCol, p.ThirdCol, item.ItemNo // How to add them in a collection or list. };

只使用扩展方法在Linq中很好,干净的交叉连接

可能重复: 用扩展方法表示的嵌套“来自”LINQ查询 我确定以前曾经问过,但我老实说找不到任何东西。 我很好奇下面仅使用内置Linq扩展方法的等效语法: var z1 = from x in xs from y in ys select new { x, y }; 我可以得到相同的结果: var z2 = xs.SelectMany(x => ys.Select(y => new { x, y })); 但它产生不同的IL代码,代码有点复杂且难以理解。 使用扩展方法有更简洁的方法吗? 这是我写的整个测试方法: private void Test() { var xs = new[] { 1D, 2D, 3D }; var ys = new[] { […]

无法通过连接编译c#linq查询

下面是一些c#代码的示例,我在执行一些linq连接时无法编译。 有谁知道为什么这不编译? 错误是 无法从查询中推断出类型参数 (在我的实际代码中, Fetch()返回一个IQueryable ) using System.Collections.Generic; using System.Linq; namespace LinqJoin { public class DataRepository { public IList Fetch() { return new List(); } } internal class SSOUser { public int Id { get; set; } } internal class UserRole { public int SSOUserId { get; set; } public int RoleId { get; […]

LINQ to SQL:来自两个不相关的表的数据,按日期排序

我有两个表tblActionLog和tblLoginLog 。 这是tblActionLog : tblActionLog ———— ID (int) Happened (DateTime) …etc. 这是tblLoginLog : tblLoginLog ———– ID (int) LoginDate (DateTime) …etc. 现在我想要一个GridView ,将来自这两个表的信息相互交错,以便对它们各自的日期信息进行排序,例如: LOG OF STUFF ——————————- DATE | WHAT 2009-09-09 | Anderson logged in. 2009-09-08 | Smith made an action. 2009-09-08 | Smith logged in. 2009-09-06 | Anna made an action. 2009-09-04 | Smith made […]

如何加入DataTable

T1和T2是具有以下字段的DataTable T1(SPEC, DWGNO, ITEM NAME, DESCRIPTION, SIZE, AMOUNT) T2(SPEC, DWGNO, ITEM NAME, DESCRIPTION, SIZE, AMOUNT) 如果SPEC,DWGNO,ITEM NAME,ESCRIPTION,SIZE相等 AMOUNT = T1AMOUNT – T2AMOUNT; New Column 1st(T1 AMOUNT), 2nd(T2 AMOUNT) and T1 Amount add to 1st, T2 Amount add to 2nd 如果SPEC,DWGNO,ITEM NAME,ESCRIPTION,SZIE不同则将T1 Amount添加到第1列,将T2 Amount添加到第2列 我需要连接表 TJ (SPEC, DWGNO, ITEM NAME, DESCRIPTION, SIZE, 1st-2nd, 1st, 2nd) 如何在C#代码中以简单的方式完成此操作? […]

在SQL Server中加入逗号分隔值

我正在用LINQ写一个问题加入li。 如何获得包含3个表组合的结果表? 我必须将表格合并在一行中。 有任何想法吗? Peole ————— Id | 1 Id |2 Name | David Name |Ameyy Surname| David1 Surname |Ameyy2 Appointment ————— Id |19 PeopleId |1 Subject |description Participant ————— Id |1 Id |2 AppointmentId |19 AppointmentId |19 PeopleId |1 PeopleId |2 Result ———————————- Id | 1 Subject | Subject Participant| David David1, Ameyy Ameyy2 […]

指定的LINQ表达式包含对c#中与不同上下文错误关联的查询的引用

我想执行这个查询: public List ShowSheet(List lst) { var res = (from sheet in _sheetRepository.Get() join line in _lineRepository.Get() on sheet.LineId equals line.Id join basemat in _baseMaterialRepository.Get() on sheet.BaseMaterialId equals basemat.Id join lineend in _lineEndRepository.Get() on sheet.LineEndId equals lineend.Id join Paint in _paintCodeRepository.Get() on sheet.PaintCodeId equals Paint.Id select new ViewSheet() { BaseMaterialId = basemat.Name, Catagory = sheet.Catagory, […]

Linq to Entities有多对多选择:如何强制生成JOIN而不是subselect子句?

首先使用EF DB我有两个具有多对多关系的实体(供应商,产品)。 entity framework不为关联表(SupplierProduct)创建实体,因为关联表仅包含强实体的主键。 我一直在为所有不提供给定产品的供应商提供以下查询: var q1 = context.Suppliers.Where(s=>!s.Products.Any(p=>p.Id == 1)); 生成的SQL使用与此类似的EXISTS依赖子查询: SELECT * FROM Suppliers s WHERE NOT EXISTS (SELECT 1 FROM SupplierProduct sp WHERE sp.SupplierId = s.Id && sp.ProductId = 1) 是否可以使用Linq to Entities方法语法生成在关联表上使用连接的查询? 即: SELECT DISTINCT s.* FROM SupplierProduct sp JOIN Supplier s ON s.Id = sp.SupplierId; WHERE sp.ProductId != 1 更新 […]

NHibernate QueryOver – 检索全部,并标记已经“选中”的那些

亲爱的NHibernate专家, 以下查询为我提供了所有类别: var result = Session.QueryOver(() => cat).List(); ..并通过运行此查询,我得到了所选的(category_x_product表): int productId = 11; Category cat = null; CategoryProduct cp = null; var subQuery = QueryOver.Of(() => cp) .Where(() => cp.ProductId == productId) .Select(Projections.Distinct(Projections.Property(() => cp.CategoryId))); result = Session.QueryOver(() => cat) .WithSubquery .WhereProperty(() => cat.Id).In(subQuery) .List(); 任何组合这两个查询的方法,以便我得到所有带有布尔值的类别,指示在CategoryProduct-query中实际上“选择”了哪一个。 将它映射到这样的实体,也许吧? CategorySelected —————- Category Category { get; set; } […]