Tag: linq

entity framework组采用最老的mySQL

我有一个庞大的物品清单,需要按一个属性对它们进行分组。 然后应选择每组中最老的一组。 简化示例:选择每个FirstName的最旧用户。 using (ED.NWEntities ctx = new ED.NWEntities()) { IQueryable Result = ctx.User.GroupBy(x => x.FirstName) .Select(y => y.OrderBy(z => z.BirthDate) .FirstOrDefault()) .AsQueryable(); } class级User : public partial class User { public int UserID { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public Nullable BirthDate […]

从XDocument中删除节点

这将删除文档中的所有元素: XDocument document = XDocument.Load(inputFile); foreach (XElement element in document.Elements()) { element.Remove(); } document.Save(outputFile); 这没有任何影响: XDocument document = XDocument.Load(inputFile); foreach (XElement element in document.Elements()) { //element.Remove(); foreach (XElement child in element.Elements()) child.Remove(); } document.Save(outputFile); 我在这里错过了什么吗? 由于这些都是对XDocument中元素的引用,因此更改是否应该生效? 我还有其他方法可以从XDocument中删除嵌套的子项吗? 谢谢!

Linq存储过程返回XML

我正在使用Entity Framework代码优先方法。 我想从DbContext类调用存储过程并获取XML输出。 存储过程(SQL Server): CREATE PROCEDURE xml_test AS BEGIN DECLARE @xml1 xml SET @xml1 = (SELECT * from Product FOR XML RAW) SELECT @xml1 AS my_xml END LINQentity framework: using (DBContext db = new DBContext()) { var ProductList = await db.Database.ExecuteSqlCommandAsync(“exec xml_test”); } 这里ProductList列表返回-1。 我想获取存储过程返回的xml输出。 注意:我也尝试了类似的方法: ExecuteSqlCommand,SqlQuery没有帮助。

解析HTML文档:正则表达式还是LINQ?

尝试解析HTML文档并提取一些元素(文本文件的任何链接)。 当前的策略是将HTML文档加载到字符串中。 然后找到文本文件的所有链接实例。 它可以是任何文件类型,但对于这个问题,它是一个文本文件。 最终目标是拥有一个IEnumerable字符串对象列表。 这部分很简单,但解析数据是个问题。 Blah Here is your first text file: Here is your second text file: Here is your third text file: Here is your fourth text file: Thanks for visiting! 最初的方法是: 将字符串加载到XML文档中,并以Linq-To-Xml方式对其进行攻击。 创建一个正则表达式,查找以href=开头,以.txt结尾的字符串 问题是: 那个正则表达式是什么样的? 我是一个正则表达式的新手,这是我的正则表达式学习的一部分。 您将使用哪种方法提取标签列表? 这将是最高效的方式? 哪种方法最易读/可维护? 更新:在HTML Agility Pack建议中向Matthew致敬。 它工作得很好! XPath建议也适用。 我希望我能将这两个答案都标记为“答案”,但我显然不能。 它们都是解决问题的有效方法。 这是一个使用Jeff建议的正则表达式的C#控制台应用程序。 它读取字符串很好,并且不包括任何未以.txt结尾的href。 使用给定的示例,它正确地.txt.snarg结果中包含.txt.snarg文件(在HTML字符串函数中提供)。 using System; […]

如何在数组.NET驱动程序中的项的属性上创建MongoDB MultiKey索引

我有一个包含项目的MongoDB集合“foos”,每个项目都有一个“bars”数组。 也就是说,“foo”具有以下架构: { “id”: UUID “name”: string … “bars”: [ “id”: UUID “key”: string … ] } 我需要使用MongoDB C#.NET Mongo驱动程序在name和bar.key上创建索引。 我假设我可以使用Linq Select函数执行此操作,如下所示: Indexes.Add(Context.Collection().Indexes.CreateOne( Builders.IndexKeys .Descending(x => x.Bars.Select(y => y.Key)))); 但是,这会导致InvalidOperationException: System.InvalidOperationException:’无法确定x => x.Bars.Select(y => y.Id)的序列化信息。 关于MultiKey索引的Mongo文档显示了如何使用简单的点表示法创建这样的索引,即 db.foos.createIndex( { “name”: 1, “bars.key”: 1 } ) 但是,MongoDB驱动程序文档似乎表明我正在使用Linq函数是正确的。 如何使用MongoDB .NET驱动程序在我的集合上创建多键索引,最好使用Linq函数?

LINQ从列表中的列表中获取唯一项

我有一个MyObject类型的List ,其定义如下: class MyObject { public string ListName { get; set; } public IEnumerable ObjectList { get; set;} } 给定一个MyObject类型的List ,使用LINQ我应该使用什么表达式来获取所有不同的OtherObject ? 我打算做的是循环每个MyObject并从ObjectList属性中获取不同的OtherObject ,但是我需要在列表中获得不同的。 请注意,如果: MyObject[0].Objectlist[0] == ‘ItemA’和MyObject[1].Objectlist[0] == ‘ItemA’它仍将返回ItemA的单个实例。 此代码仅是一种表示forms。 顺便说一句,这不是我访问我的对象的方式。

linq-to-sql“无法删除尚未附加的实体”

我收到错误Cannot remove an entity that has not been attached. 当我尝试删除记录时。 我已经google了,虽然有很多地方可以找到解决这个问题的解决方案,但建议的修复程序并没有让我更进一步: using (MyDataContext TheDC = new MyDataContext()) { TheDC.MyTable.Attach(ARecord); //added this line but doesn’t fix it. TheDC.MyTable.DeleteOnSubmit(ARecord); TheDC.SubmitChanges(); 我的更大问题是:这个问题是否仅影响删除查询,还是影响其他类型的查询,我还没有碰到这个问题。 我写了一个更新查询,似乎没有遇到这个错误。 谢谢。

在SQL CLR UDF中使用System.Linq程序集

我在Visual Studio 2010中使用SQL UDF项目类型在C#中创建SQL Server用户定义函数。我的代码中有一个简单的Linq字符串操作表达式(myString.Where()),因为我不是使用System.Linq命名空间。 如果我加 using System.Linq; 到我的.cs文件,我收到一个错误,询问我是否缺少程序集引用。 如果我然后在解决方案资源管理器中右键单击该项目,并选择“添加引用”,则.NET选项卡中没有列出System.Linq组件。 我想我可以浏览硬盘以获得适当的汇编DLL,但为什么Visual Studio不知道呢? 在SQL CLR代码中使用Linq有一些限制吗?

如何结合两个数据表并对结果进行排序

问:如果我有两个这样的DataTable: Dt1 (emp_num,emp_name,type) Dt2 (emp_num,emp_name,type) 我想联合他们并通过emp_name订购结果。

“转动”IEnumerable <IEnumerable > 90度

我正在寻找的是一个基本的操作(我肯定有一个名字,我只是没有意识到atm)。 我有一个矩阵像: {1,2,3} {A,N,F} {7,8,9} 我想改变它 {1,A,7} {2,N,8} {3,F,9} (以上只是对象的标识符而不是实际值。实际对象属于同一类型且无序) 我更喜欢它的声明性解决方案,但速度是一个因素。 我将不得不转动几张桌子(每分钟100k格),慢速版本将在关键路径上。 但是我对可读解决方案仍然更感兴趣。 我正在寻找下面的替代解决方案。 (换句话说,我不是指变化,而是一种不同的方法) var arrays = rows.Select(row => row.ToArray()); var cellCount = arrays.First().Length; for(var i = 0;i<cellCount;i++){ yield return GetRow(i,arrays); } IEnumerable GetRow(int i,IEnumerable rows){ foreach(var row in rows}{ yield return row[i]; } } 在两个几乎同样可读的解决方案中,我会更快,但可读性在速度之前 编辑它将始终是一个方阵