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,请教这个查询语句是什么意思等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)