我有一个datatable集合 用linq 怎么通过其中的二列得到该二列重复的所有数据

我有一个datatable集合 用linq 怎么通过其中的二列得到该二列重复的所有数据,第1张

class Group

{

public String name;

public String code;

public String phone;

public String id;

}

class RepeatGroup

{

public String code;

public String id;

public List<Group> Groups;

public RepeatGroup(String c,String i)

{

code=c;

id=i;

Groups=new List<Group>();

}

}

List<RepeatGroup> GetRepeat(List<Group> groups)

{

List<RepeatGroup> repeats=new List<RepeatGroup>();

for(int i=0;i<groupsCount;i++)

{

if(repeatsCount(q=>qid==groups[i]id&&qcode==groups[i]code)==0)

{

RepeatGroup temp=new RepeatGroup(groups[i]code,groups[i]id);

tempGroupsAdd(groups[i]);

repeatsAdd(temp);

}

else

{

repeatsFirst(q=>qid==groups[i]id&&qcode==groups[i]code)GroupsAdd(groups[i]);

}

}

return repeatsWhere(q=>qGroupsCount>1)ToList();

}

找出重复的,按组排列

效率要看你是怎么实现模糊查询的,你可以抓一下生成的SQL查询语句,用分析器看一下执行效率就知道了。

另外我记得DataTable的Select是直接针对内存中的数据表查询的。。。好像

获取与LINQ兼容的DataTable

为了说明DataSet扩展的使用,假设你已经创建了一个LinqOverDataSet的C#控制台程序。注意,在你创建NET 35项目的时候,就会自动添加SystemCoredll和SystemDataDataSetExtensionsdll的引用;但是,对于这个例子,添加额外的引用,这些引用在第23章中创建的AutoLotDALdll程序集中,并且用以下的逻辑更新初始代码文件:

using SystemData;

using AutoLotDisconnectedLayer;

namespace LinqOverDataSet

{

class Program

{

static void Main(string[] args)

{

ConsoleWriteLine(" LINQ over DataSet "n");

// 获取包含the AutoLot 数据库中当前存货清单 DataTable 的数据

InventoryDALDisLayer dal = new InventoryDALDisLayer(

@"Data Source=(local)"SQLEXPRESS;Initial Catalog=AutoLot;" +

"Integrated Security=True");

DataTable data = dalGetAllInventory();

// 像如下调用方法

ConsoleReadLine();

}

}

}

当你希望转换ADONET DataTable成LINQ兼容的对象的时候,你只需要简单的调用由DataTableExtensions类定义的AsEnumerable()扩展方法。它会返回一个EnumerableRowCollection对象,该对象包含了DataRows集合。运用EnumerableRowCollection类,接下来你就能如期地 *** 作每一行。举一个简单的例子:

static void PrintAllCarIDs(DataTable data)

{

// 获取DataTable的可枚举版本

EnumerableRowCollection enumData = dataAsEnumerable();

// 打印 the car ID 的值

foreach (DataRow r in enumData)

ConsoleWriteLine("Car ID = {0}", r["CarID"]);

}

因为EnumerableRowCollection实现了IEnumerable<T>接口,它被允许用以下的代码段捕获返回值:

// 存储IEnumerable<T>类型的返回值

IEnumerable<DataRow> enumData = dataAsEnumerable();

// 隐藏存储的返回值

var enumData = dataAsEnumerable();

在这里,实际上我们没有运用LINQ查询;然而,关键是enumData对象现在能够成为LINQ查询表达式的对象。我们也注意到EnumerableRowCollection确实包含了DataRow对象集合,当我们使用类索引器而非每一个子类打印出CarID列的值。

在大多数情况下,你不需要声明一个EnumerableRowCollection类型变量来存储AsEnumerable()的返回值。甚至,可以在查询表达式中调用该方法。有一个更有趣的方法,它获取CarID的映射,在CarID大于5之处返回所有DataTable的实例。

static void ApplyLinqQuery(DataTable data)

{

// Project a new result set containing

// the ID/color for rows with a CarID > 5

var cars = from car in dataAsEnumerable()

where

(int)car["CarID"] > 5

select new

{

ID = (int)car["CarID"],

Color = (string)car["Color"]

};

ConsoleWriteLine("Cars with ID greater than 5:");

foreach (var item in cars)

{

ConsoleWriteLine("-> CarID = {0} is {1}", itemID, itemColor);

}

}

希望对你有帮助吧

今天下午有人在论坛咨询 LinqDataSource 控件如何进行组合字段数据显示在下列列表中 其实 很简单 就是使用new 重新生成一个临时类即可 下面是完整的代码

C# 代码using System;using System Collections Generic;using System Web;

/// <summary>///Books 的摘要说明/// </summary>public class Books{  public int Id { get; set; }  public String Author { get; set; }  public String Title { get; set; }  public DateTime PunDate { get; set; }

public Books() { }

public List<Books> GetBooks  {    get    {      return this GetInternalBooks();    }  }

internal List<Books> GetInternalBooks()  {    List<Books> bs = new List<Books>();    bs Add(new Books { Id = Author = 孟宪会 Title = 《ASP NET 应用开发技术》 PunDate = System DateTime Now AddMonths( ) });    bs Add(new Books { Id = Author = 孟宪会 Title = 《Eric Meyer谈CSS(卷 )》 PunDate = System DateTime Now });    bs Add(new Books { Id = Author = 孟宪会 Title = 《Eric Meyer谈CSS(卷 )》 PunDate = System DateTime Now AddMonths(+ ) });    return bs;  }}

ASPX 代码<%@ Page Language= C# %><!DOCTYPE PUBLIC //W C//DTD XHTML Transitional//EN transitional dtd >< xmlns= ><head runat= server >  <title></title></head><body>  <form id= form runat= server >  <asp:DropDownList ID= DropDownList runat= server DataSourceID= LinqDataSource     DataTextField= DataText DataValueField= Id >  </asp:DropDownList>  <asp:LinqDataSource ID= LinqDataSource runat= server ContextTypeName= Books TableName= GetBooks     Select= new(Id Id toString() + + Author + + Title + + PunDate ToString( yyyy MM dd ) as DataText) >  </asp:LinqDataSource>  </form></body></>

最后的执行结果将是下面的样子

HTML 代码<select name= DropDownList id= DropDownList >    <option value= > 孟宪会 《ASP NET 应用开发技术》 </option>    <option value= > 孟宪会 《Eric Meyer谈CSS(卷 )》 </option>    <option value= > 孟宪会 《Eric Meyer谈CSS(卷 )》 </option></select>在此写出此文

lishixinzhi/Article/program/net/201311/13266

以上就是关于我有一个datatable集合 用linq 怎么通过其中的二列得到该二列重复的所有数据全部的内容,包括:我有一个datatable集合 用linq 怎么通过其中的二列得到该二列重复的所有数据、LINQ和DataView和DataTable的Select实现模糊查询效率谁高、初学Linq,请教这个查询语句是什么意思等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10150506.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存