Tag: join

LINQ加入多表

我有4张桌子: table1 id1, fk_tbl2 //this is the foreign key to the “id” in table2 table2 id2, fk_tbl3 //this is the foreign key to the “id” in table3 table3 id3, fk_tbl4 //this is the foreign key to the “id” in table4 table4 id4, name 我想创建一个多表连接,当用户输入“id4”时,我可以获得“table1”中的记录列表。 如何在C#中编写连接? 谢谢。

当不同类型的List的属性值相等时,Linq查询要从List中排除?

我有一个类型费用的列表,我需要从中排除那些具有存在于另一个类型为int的列表中的ID。 List ExcludedFeeIDs = new List{1,2,3,4}; List MyFees = (from c in ctx.Fees select c).ToList(); 示例:列出GoodFees =(来自ftx.Fees中的f,其中f.FeeID!= ExcludedFeeIDs中的一个ID ); 请帮忙?

lambda表达式使用select和where子句连接多个表

我有三个表多对多关系我已加入三个表并选择我想要的值但现在我需要从查询结果中选择一行通过指定id这是我的三个表 这是使用LINQ lambda表达式的查询: DataBaseContext db = new DataBaseContext(); public ActionResult Index() { var UserInRole = db.UserProfiles. Join(db.UsersInRoles, u => u.UserId, uir => uir.UserId, (u, uir) => new { u, uir }). Join(db.Roles, r => r.uir.RoleId, ro => ro.RoleId, (r, ro) => new { r, ro }) .Select(m => new AddUserToRole { UserName = mruUserName, RoleName […]

在NHibernate中,使用Disjunction可以得到双重结果

我正在尝试使用DetachedCriteria进行选择,我想在运行时添加OR分隔的几个条件。 如果我使用: Restrictions.Or( cond1, Restrictions.Or(cond2, Restrictions.Or(cond3, cond4)) ) 我得到了我想要的结果。 但如果我像这样使用Disjunction: var disjunction = Restrictions.Disjunction(); disjunction.Add(cond1); disjunction.Add(cond2); disjunction.Add(cond3); disjunction.Add(cond4); 我有cond1和cond2的实体对他们来说是真的,在结果我得到它们两次(在列表结果中相同的实体被返回两次)。 我不想使用QueryOver,因为我正在尝试使用QueryOver来完成一些难以实现的事情(我正在尝试做的最终结果是从filter的json获取sql查询)。 什么导致分离返回双打? 有没有办法在最后添加DISTINCT? 我做错了,我不应该在同一张桌子上使用析取不同的条件吗? 更新: 对于DISTINCT部分: criteria.SetResultTransformer(new NHibernate.Transform.DistinctRootEntityResultTransformer()); 要么 Projections.Distinct(Projections.Id()) 真正的解决方案如RadimKöhler所述 – 正确使用子查询。

LINQ group by date – 包括空日,不使用join

使用C#,NHibernate,NHibernate到LINQ。 使用NHibernate到LINQ,我没有JOINfunction。 我也不能使用QueryOver。 我有一个LINQ查询,计算潜在客户和销售额。 此表仅在新的销售线索或销售完成时创建,因此有些日子没有插入行。 执行以下查询有效 var query3 = query2.AsEnumerable() .Where(x => x.Created = fromDate.Value) .GroupBy(x => x.Created.Date) .Select(g => new ReferrerChart { Date = g.Key.Date, LeadsCount = g.Count(x => !x.IsSale), SalesCount = g.Count(x => x.IsSale) }); 但有些日期不在那里(日期有0个线索和销售)。 如何包含这些日期并让他们设置LeadsCount = 0和SalesCount = 0而不使用join? 编辑: 最终结果有效: var selectedFromDate = fromDate.Value; var selectedToDate = toDate.Value; var selectedDates […]

首先拆分然后加入字符串的子集

我有一个输入字符串如下: thumb_634735515600845357tchayat_november_200612.jpg 我想要做的是首先用_ 分割这个字符串。 然后将得到的标记放在1到n的位置并加入它们。 具体来说,就我的样本输入而言,这是我想要的输出。 如您所见, thumb_已从字符串的前面删除: 634735515600845357tchayat_november_200612.jpg 我知道怎么做分裂。 但接下来我如何进行加入步骤呢? 我意识到我可以使用for循环来进行连接。 但有更好的方法吗? 我不能使用子字符串方法来执行连接步骤,因为我在thumb_之前有数据。 最后,请注意thumb的_字符始终是_的第一个实例。

LINQ:加入MySql和SQL Server表

我有相关数据存在于两个完全独立的数据库中,我需要来自这两个数据库的信息。 其中一个数据库存在于MySql服务器上,另一个存在于MS SQL Server上。 不要问为什么我们将相关数据存储在两个完全不同的服务器上,这是一个很长的故事。 从高级角度来看,我需要将MySqlTableA连接到SQLServerTableB ,执行一些复杂的限制,并可能执行一些GROUP BY和计数。 我正试图找到一种方法,使这两个数据库之间的连接相当容易。 我认为LINQ可以解决我的问题,但据我所知,我不能创建一个同时具有MySql和SQL Server源的上下文。 我可以将两个源放在不同的上下文中 – 使用Devart的LinqConnect创建MySql上下文 – 但LINQ不允许跨上下文连接。 (我尝试了这里描述的方法,但它不起作用: 模拟交叉上下文连接 – LINQ / C# ) 那么我的选择是什么? 有没有办法有效地连接这两个不同的数据库服务器上的表(虽然LINQ或其他),或者我将不得不循环并手动加入数据? 编辑: 如前所述,我已经尝试过AsQueryable()解决方法,但我仍然遇到了跨上下文exception。 这是我的代码: public static MySqlDataContext mysql = new MySqlDataContext(); public static SQLDataContext sql = new SQLDataContext(); public static void Main() { var rows = from a in mysql.tableA join […]

entity framework – 如何在辅助表中的非主键列上连接表?

我想使用entity framework加入2个表。 我希望第二个表的连接位于非主键列上。 例如,我有一个带有字段的表Foo Foo.Id (PK) Foo.DbValue 和桌子吧 Bar.Id (PK) Bar.DbValue Bar.Description 我想在DbValue字段中加入Foo到EF的Bar。 在hibernate / nhibernate中,可以通过向多对一添加列参数来实现此目的。 大致是这样的 如果有人知道如何在EF中这样做,请提前感谢。

如何左外连接c#中的两个DataTable?

我如何保持左外连接(我认为它是左外连接,但我不是100%确定)两个数据表具有以下表和条件,同时保留两个表中的所有列? dtblLeft: id col1 anotherColumn2 1 1 any2 2 1 any2 3 2 any2 4 3 any2 5 3 any2 6 3 any2 7 any2 dtblRight: col1 col2 anotherColumn1 1 Hi any1 2 Bye any1 3 Later any1 4 Never any1 dtblJoined: id col1 col2 anotherColumn1 anotherColumn2 1 1 Hi any1 any2 2 1 Hi […]

为什么这个LINQ join语句不起作用?

我有这个LINQ查询: // types… LinkedList itemScores = new LinkedList(); var result = from i in _ctx.Items join s in itemScores on i.Id equals s._id orderby s._score descending select new ItemSearchResult(i, s._score); // this fails: return result.ToList(); 哪个生成此错误: 无法创建类型为’System.Collections.Generic.IEnumerable`1’的常量值。 在此上下文中仅支持基本类型(例如Int32,String和Guid’)。 [编辑]这是WeightedItem的代码: public class WeightedItem { public int _id; public decimal? _score; public WeightedItem(int id, decimal? score) { […]