问题标签 [linq-to-dataset]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linq - 将实体模型转换为数据集 - 可以这样做吗?
在这里非常沮丧......我通常可以在网上某处的.Net中找到某种复杂问题的答案,但这个答案让我望而却步。我在一个场景中,我必须将 LINQ to Entity 查询的结果转换为 DataSet,以便数据可以由现有的业务逻辑处理,但我找不到一个可行的解决方案。
我已经尝试过像 EntityCommand 生成阅读器这样的基本方法,但是这个方法不起作用,因为 DataTable.Load() thorws an excpetion(EntityCommand 生成的阅读器不支持 GetSchemaTable() )。
我还尝试了更多 [supposed] 友好的方法,例如 Entity to IDataReader(http://l2edatareaderadapter.codeplex.com/),但是这个会引发异常,文档很少,并且自 2008 年以来一直没有被触及。
我发现的另一种方法是在这里(http://blogs.msdn.com/b/alexj/archive/2007/11/27/hydrating-an-entitydatareader-into-a-datatable-part-1.aspx),但确实没有代码的工作副本;只有片段。
我很难相信首先 MS 不会提供这种开箱即用的向后兼容项目,其次,它也不会由社区创建。
如果有任何可用的商业解决方案,我也愿意研究。
谢谢!
linq-to-dataset - 在 DataTable 行中查找列
当我运行它时,我收到“运算符'&&'不能应用于'lambda表达式'和'lambda表达式'类型的操作数”错误。
最新的运行,我得到了我需要的。
问题 - 为什么第一个代码中的错误?
linq-to-dataset - 获取列值
cityStateTaxes 是一个 DataRow,为什么/如何我无法获取 FirstOrDefault() 中的列值?
谢谢,
c# - 绑定数据源但显示其他内容
我有很多地方需要将表单控件直接绑定到后备数据库。我正在使用 LINQ to DataSet 来执行此操作。
例如,我有一个 ComboBox,其中的条目由数据库查询填充。问题当然是我的所有数据都使用数字 ID,我需要进行表查询以将其转换为用户可读的选项。
通常我会加入第二个表并使用组合框 DisplayMember 指向用户可读的字符串列。这不起作用,因为在查询上使用连接或任何投影后,您(可以理解)无法将该查询转换为 DataView。
很难相信不是每个使用 DataView 的人都会遇到这个问题。有没有办法覆盖我的表单控件的行为以使它们显示其值的函数?就像如果它们的值是 v,那么它们会显示 SomeMethod(v)?
.net - LINQ to DataSet 中的 GroupBy
背景:
我正在将数据从 MySQL 数据库导入 SQL-Server 数据库(用于报告和后来的 SSAS-Cube)。我想同时规范化数据。我想将重复分组Ticket_IDs
到具有其他有用信息的表中的一条记录,Contact
并将原始数据保留在子表中ContactDetail
(与联系人的外键)。因此,中的每条记录Contact
都有一个唯一的Ticket_ID
.
我决定使用强类型数据集进行导入。现在我想知道检测我是否已经添加了 Ticket_ID 的最佳方法是什么。我可以在每个循环(~100000 条记录)中检查它,但我假设有更好/更快的方法。
简化的样本数据:
这应该是Contact
-table
问题:
LINQ/LINQ-to-DataSet 是否可以按 Ticket_ID 分组并获取每个 ContactRow 的 ContactDetailRows 列表?我知道有一个GroupBy -Extension,但我不确定如何使用以及它是否满足我的需要(保留 ContactDetail-Rows,fe 就像一个以 Ticket_ID 作为键和List(of EmailRow)
作为值的字典)。
这就是我所拥有的(简化):
src
:类型化数据集(MySQL)src.email
: 输入 DataTable => 到ContactDetail
dest
: 类型化数据集(SQL-Server)dest.Contact
类型化数据表dest.ContactDetail
使用 fk 键入 DataTableContact
我更喜欢 VB.NET,因为我对 LINQ 还不太熟悉,而且 C# 中的语法完全不同。
编辑:
感谢@Magnus,我可以通过以下方式进行操作:
我将看看这是否比使用 HashSet 的迭代方法更快来检测联系人是否已经创建。
.net - 在具有不同架构的两个类型化数据表中获取不同的行
如何从 TableA 中获取不在 TableB 中的所有行,其中 TableA 的架构与 TableB 不同(它们是来自不同 dbms 的不同类型的 DataTable 类)?
我需要所有不在ascountry
中的 -rows 。country_id
Country
idCountry
这不起作用,因为它们具有不同的架构(src.country
并且dest.Country
是不同的 DataTable 类):
src
并且dest
是强类型数据集
注意:不一定是VB.NET
我假设我需要提供IEqualityComparer
第二个参数,但不知道如何。也许还有另一种(更快的)方法来识别新行。
背景:
我正在将表从 MySQL 数据库导入 SQL-Server 数据库。只检查主键而不比较行的内容就足够了。尽管此示例表仅包含几行,但两个表包含约 100000 行,因此性能对同步源和目标很重要。
.net - 如何在 LINQ 中获取自引用表的“级别”?
有一个Category
带有 pkidCategory
和自引用外键的表fiCategory
。这意味着当 fiCategory is null
. 如果fiCategory
链接到另一个类别,它是它的子类别。但是这个子类别也有 1-n 个子类别(fiCategory
链接到它idCategory
)也是有效的。
问:如何获取主类别、子类别、子类别、...等的列表。与 LINQ?
背景:
我正在使用类型化的数据集来比较来自 Server1/MySQL 的数据和来自 Server2/MS SQL-Server 的数据。规范化和清理后(有几个不一致的地方)我想将新数据导入 SQL-Server。首先我必须导入主要类别,然后是子类别等等。否则,当我尝试将具有外键的行插入尚未插入的类别时,SQL-Server 将引发约束异常。
这些是表(左 MySQL 源表,右 SQL Server 目标表):
在这里,我得到了 MySQL 中不在 SQL-Server 中的新行:
src
并且dest
是类型化的数据集
现在我想导入新行。通过这种方式,我得到了所有“主要类别”:
通过这种方式,我得到了所有子类别:
两个 LINQ 查询都在工作,但我如何获得子类别的所有“级别”?我需要将行从“顶部”插入到“底部”。有没有一种方法可以在任何深度下都有效?
至少这不起作用(重复 pk 值):
我仍在学习 LINQ 并欣赏任何类型的建议(也在 C# 中)。先感谢您。
注意:也许您知道一种方法,我可以暂时禁用 SQL-Server 中的外键约束,并在我从 ADO.NET 插入所有行后启用它。那会简单得多。
这是解决方案,感谢@Tridus:
这是递归函数:
c# - 如何使用字段与类型?
我有一种方法可以确定 a 中列的最小值和最大值DataTable
:
我想将其重构为:
我需要确定数据类型并使用它而不是硬编码m.Field<double>
。这该怎么做?
更新 至于为什么我要计算最小值和最大值之间的差异
.net - 使用 LINQ 获取两列的重复项
LINQ 让我发疯。为什么以下查询不返回重复项,而它只使用一个标识符?我的错误在哪里?
编辑:以下是完整的解决方案,感谢@Jon Skeet 的回答:)
分组的主要问题是我必须使它们成为key
属性。我上面代码中的下一个问题是从原始表中获取重复的行。因为几乎每一行都有重复(根据两个字段),结果 DataTable 包含 100 行中的 99 行,而不仅仅是 19 个重复值。我只需要选择第一个重复行并将它们与 PK 上的原始表连接起来。
虽然这在我的情况下有效,但如果我只有复合键,也许有人可以解释我如何从原始表中只选择重复项。
编辑:我自己已经回答了问题的最后一部分,所以这就是我所需要的:
我需要Let-Keyword以将其他列保持在相同的上下文中并仅返回分组副本的第一行。通过这种方式,我可以使用CopyToDataTable
从重复行创建 DataTable。
总体上只需几行代码(我可以保存第二个查询以查找原始表中的行)来查找多列上的重复项并创建它们的 DataTable。