标签: linq-to-dataset

AsEnumerable().Take

我想从数据表中获取前 n 条记录。

我不想运行我已经知道的循环。

我正在尝试这样做

DataTable dt = dtResult.AsEnumerable().Take(n)
Run Code Online (Sandbox Code Playgroud)

是正确的方法..?

使这“n条记录”位于另一个数据表中的过程是什么?

c# linq datatable linq-to-dataset

3
推荐指数
1
解决办法
2990
查看次数

左外连接 - LINQ到数据表

我正在尝试在两个数据表上使用LINQ应用左外连接.当我尝试调试并查看结果变量中包含的数据时,我收到下面列出的异常:

System.ArgumentException:值不能为null.参数名称:行

码:

private DataTable DataTable1()
{
    DataRow dataRow = null;
    DataTable dt1 = new DataTable();
    dt1.Columns.Add("EmpId");
    dt1.Columns.Add("EmpName");
    dataRow = dt1.NewRow();
    dataRow["EmpId"] = "EMP001";
    dataRow["EmpName"] = "Ajaj Kumar";
    dt1.Rows.Add(dataRow);
    dataRow = dt1.NewRow();
    dataRow["EmpId"] = "EMP002";
    dataRow["EmpName"] = "Sanjay Gupta";
    dt1.Rows.Add(dataRow);
    dataRow = dt1.NewRow();
    dataRow["EmpId"] = "EMP003";
    dataRow["EmpName"] = "Ashish Charan";
    dt1.Rows.Add(dataRow);
    dt1.AcceptChanges();
    return dt1;
}

private DataTable DataTable2()
{
    DataRow dr = null;
    DataTable dt2 = new DataTable();
    dt2.Columns.Add("EmpId");
    dt2.Columns.Add("Salary");
    dr = dt2.NewRow();
    dr["EmpId"] = "EMP001";
    dr["Salary"] = "50000";
    dt2.Rows.Add(dr); …
Run Code Online (Sandbox Code Playgroud)

c# linq linq-to-dataset

3
推荐指数
1
解决办法
1万
查看次数

集团内部集团linq

我有这样的数据表:

我想将此表分组为FIELD A和FIELD B,我的组的第三个字段应该是FIELD C的列表,但必须按ID字段进行分组.

最后,结果应该是这样的:

First Field | Second Field |  Third Field
------------+--------------+----------------
     5      |     XXXX     |(8) (2,6,3) (9)  
     5      |     KKKK     |(8,3)
Run Code Online (Sandbox Code Playgroud)

第三个字段必须是列表列表.

我怎么能用LINQ做到这一点?

到目前为止我试过这个:

        var trytogroup = (from p in datatable.AsEnumerable()
                                group p by new
                                {
                                    ID = p["Id"].ToLong(),
                                    FieldA = p["FieldA"].ToLong(),
                                    FieldB = p["FieldB"].ToString()
                                } into g
                                select new
                                {
                                    FirstField = g.Key.FieldA,
                                    SecondField = g.Key.FieldB,
                                    ThirdField = datatable.AsEnumerable().Where(p => p["FieldA"].ToLong() == g.Key.FieldA && p["FieldB"].ToString() == g.Key.FieldB).Select(p => p["FieldC"].ToLong()).GroupBy(x => x["Id"].ToLong()).Distinct().ToList()
                                });
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

c# linq linq-to-dataset

3
推荐指数
1
解决办法
1319
查看次数

简化我的C#Linq声明?

课程:

class Foo
{
    public int Id { get; set; }
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

名单

List<Foo> lst = new List<Foo>();
Run Code Online (Sandbox Code Playgroud)

数据表:

 DataTable dt = GetFromDb ()....
Run Code Online (Sandbox Code Playgroud)

我想填写lst来自的记录dt.

我做过:

Array.ForEach(dt.AsEnumerable().ToArray(), y = > lst.Add(new Foo()
{
    Id = int.Parse(y["id"].ToString()), Name = y["name"].ToString()
}));
Run Code Online (Sandbox Code Playgroud)

题 :

  1. 我不能做别的事 dt.AsEnumerable().Select(_ => fill lst )吗?

知道选择签名的一部分(在这种情况下)是Func<datarow,void>不会编译的

但是,除了我的丑陋方式之外,还有其他办法吗?

c# linq linq-to-dataset

2
推荐指数
2
解决办法
228
查看次数

使用linq将通用列表转换为datatable ..?

List<Employee> objEmpList = new List<Employee>();
    for (int i = 0; i < 5; i++)
    { 
        objEmpList.Add(new Employee(){ID=i, Name="aa" + i});
    }
Run Code Online (Sandbox Code Playgroud)

我想使用linq或lambda表达式创建具有通用列表项的表作为行...如何做到?? ??我使用循环做了但我想用linq做那个..!

c# linq linq-to-dataset

2
推荐指数
1
解决办法
2万
查看次数

我在哪里可以获得有关的信息!VB.Net在Linq中使用的运算符到DataSet?

示例查询应用程序使用了!运算符引用DataRow中的字段.

Option Strict Off

Imports System.Data
Imports System.Linq

Module Program

    Public Sub Main()
        Dim numbers() As Integer = {5, 4, 1, 3, 9, 8, 6, 7, 2, 0}
        Dim table As New DataTable("Numbers")
        table.Columns.Add("number", GetType(Integer))
        For Each n In numbers
            table.Rows.Add(New Object() {n})
        Next

        Dim lowNums = From row In table.Rows _
                      Where row!number < 5
                      Select row

        For Each x In lowNums
            Console.WriteLine(x!number)
        Next
    End Sub

End Module
Run Code Online (Sandbox Code Playgroud)

是什么 !操作员叫?规则记录在哪里?

.net linq vb.net operators linq-to-dataset

2
推荐指数
1
解决办法
125
查看次数

使用var匿名对象获取LINQ的InvalidCastException

我在使用foreach构造中的var变量尝试循环查询对象时遇到错误.我正在将xml加载到数据集中,并出于明确原因对Linq执行数据集.请纠正我的错误.这是我的代码:

ds.ReadXml(fsReadXml);

DataTable myDataTable = ds.Tables[0];

var ordersQuery = myDataTable.AsEnumerable();

var subQuery = (from Geo03 in ordersQuery
                select new
                {
                    PARENTTYPE = Geo03.Field<String>("PARENTTYPE"),
                    PARENTINSTANCE = Geo03.Field<int>("PARENTINSTANCE"),
                    CHILDTYPE = Geo03.Field<String>("CHILDTYPE"), 
                    CHILDINSTANCE = Geo03.Field<String>("CHILDINSTANCE"),
                    CHILDPOS = Convert.ToInt32(Geo03.Field<int>("CHILDPOS"))
});
XDocument doc = null;
foreach (var cin in subQuery)
{


}
Run Code Online (Sandbox Code Playgroud)

这是生成的错误:

System.InvalidCastException: Specified cast is not valid.
   at System.Data.DataRowExtensions.UnboxT`1.ValueField(Object value)
   at System.Data.DataRowExtensions.Field[T](DataRow row, String columnName)
   at SpectraWorkon.Program.<Main>b__0(DataRow Geo03) in c:\users\arun\documents\visual studio 2010\Projects\SpectraWorkon\SpectraWorkon\Program.cs:line 29
   at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
   at SpectraWorkon.Program.Main(String[] args) in c:\users\arun\documents\visual studio 2010\Projects\SpectraWorkon\SpectraWorkon\Program.cs:line 38 …
Run Code Online (Sandbox Code Playgroud)

c# linq linq-to-xml linq-to-dataset

1
推荐指数
1
解决办法
1941
查看次数

从linq查询中填充数据表

我正在使用以下代码

IEnumerable<DataRow> query = from c in at.appointmentcalendars.AsEnumerable() 
                             select c;

DataTable dt = query.CopyToDataTable();
Run Code Online (Sandbox Code Playgroud)

但我得到以下错误

无法隐式转换'System.Collections.Generic.IEnumerable<appointmentcalendar>''System.Collections.Generic.IEnumerable<System.Data.DataRow>'.存在显式转换(您是否错过了演员?)

c# linq linq-to-dataset

1
推荐指数
1
解决办法
7万
查看次数

从DataTable中删除具有相同列值的行并添加相应的值

我有一个包含多列的DataTable.如果某些列的值重复,我需要删除该行并对其添加数量.例如,跟随数据表

ITEM    QTY
------------
1       20
2       10
2       10
3       20
Run Code Online (Sandbox Code Playgroud)

会成为:

ITEM    QTY
-----------
1       20
2       20
3       20
Run Code Online (Sandbox Code Playgroud)

这就是我做的

var table = dt.AsEnumerable() 
.GroupBy(row => row.Field("ITEM")) 
.Select(group => group.First()) 
.CopyToDataTable();
Run Code Online (Sandbox Code Playgroud)

它删除了额外的行但不添加数量.所以请在这方面帮助我.

c# linq datatable dataset linq-to-dataset

1
推荐指数
1
解决办法
2610
查看次数

无法将"System.Byte"类型的对象强制转换为"System.String"类型

在通过过滤将Datatable转换为Dataview时,查询我的SQL数据库以获取数据到Dataset,因为作为Linq的新手,我收到了基本的转换错误.

码:

DataView cktDv = (from clounceform in dsclounceForms.Tables["Table2"].AsEnumerable()
                                         where clounceform.Field<string>("Form_FileType_ID").Equals("5")
                                         select clounceform).CopyToDataTable().AsDataView();
Run Code Online (Sandbox Code Playgroud)

例外是

Unable to cast object of type 'System.Byte' to type 'System.String'.
System.Data.DataSetExtensions
at System.Data.DataRowExtensions.UnboxT`1.ReferenceField(Object value)
at System.Data.DataRowExtensions.Field[T](DataRow row, String columnName)
at ClounceFormsSuite.Design.CreateFormDesign.<>c.<CreateForm>b__12_0(DataRow bounceform) in myprojectfolderpath\CreateFormDesign.xaml.cs:line 115
at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
at System.Data.DataTableExtensions.LoadTableFromEnumerable[T](IEnumerable`1 source, DataTable table, Nullable`1 options, FillErrorEventHandler errorHandler)
at System.Data.DataTableExtensions.CopyToDataTable[T](IEnumerable`1 source)
at ClounceFormsSuite.Design.CreateFormDesign.CreateForm(String[] cktFileContent, String filePath, String formID) in myprojectfolderpath\CreateFormDesign.xaml.cs:line 114
at ClounceFormsSuite.Design.CreateFormDesign.UserControl_Loaded(Object sender, RoutedEventArgs e) in myprojectfolderpath\CreateFormDesign.xaml.cs:line 70
Run Code Online (Sandbox Code Playgroud)

我无法继续进行我实际上将字符串转换为int并给出了不同的错误,这会误导我更多当尝试转换为int时

DataView cktDataView = (from clounceform in dsclounceForms.Tables["Table2"].AsEnumerable()
                                         where …
Run Code Online (Sandbox Code Playgroud)

c# linq wpf linq-to-dataset

0
推荐指数
1
解决办法
2291
查看次数

标签 统计

linq ×10

linq-to-dataset ×10

c# ×9

datatable ×2

.net ×1

dataset ×1

linq-to-xml ×1

operators ×1

vb.net ×1

wpf ×1