首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

linq查询DataTable的有关问题

2012-07-04 
求一个linq查询DataTable的问题我有一个table,里面有a,b,c,d四列数据,现在我有一个规则,就是查询a+b+c的组

求一个linq查询DataTable的问题
我有一个table,里面有a,b,c,d四列数据,现在我有一个规则,就是查询a+b+c的组合,如果有超过2行数据的这个组合是一样的,就说明有重复数据、。比如:

a b c d
-----------------------
qq ss dd fg
qq ss dd reb
qq acd dd tbg

由于第一行和第二行的a+b+c的组合相同,就被视为有重复数据。linq可不可以像sql一样,通过count查询判断,当count>1就说明有重复数据呢?哪位大侠指点下?谢谢了。

[解决办法]
LINQ的group by +count
[解决办法]

C# code
            DataTable dt = new DataTable();            dt.Columns.Add("a");            dt.Columns.Add("b");            dt.Columns.Add("c");            dt.Columns.Add("d");            dt.LoadDataRow(new object[] { "qq", "ss", "dd", "fg" },false);            dt.LoadDataRow(new object[] { "qq", "ss", "dd", "reb" }, false);            dt.LoadDataRow(new object[] { "qq", "acd", "dd", "tbg" }, false);            var res = dt.AsEnumerable().GroupBy(p => p["a"].ToString() + p["b"].ToString() + p["c"].ToString());
[解决办法]
C# code
void Main(){            DataTable dt = new DataTable();            dt.Columns.Add("a");            dt.Columns.Add("b");            dt.Columns.Add("c");            dt.Columns.Add("d");            dt.LoadDataRow(new object[] { "qq", "ss", "dd", "fg" },false);            dt.LoadDataRow(new object[] { "qq", "ss", "dd", "reb" }, false);            dt.LoadDataRow(new object[] { "qq", "acd", "dd", "tbg" }, false);        var query= dt.AsEnumerable().GroupBy(d=> new {a=d.Field<string>("a"),b=d.Field<string>("b"),c=d.Field<string>("c")})                            .Where(g=>g.Count()>1);        Console.WriteLine(query.Count()>0?"有重复":"无重复");}
[解决办法]
代码类似,只不过你这是字符串
参考http://topic.csdn.net/u/20120412/15/b36be23a-c01e-49b3-a011-3ca1b2acc68b.html
[解决办法]
C# code
            DataTable dt = new DataTable("test");            dt.Columns.Add(new DataColumn("a", typeof(string)));            dt.Columns.Add(new DataColumn("b", typeof(string)));            dt.Columns.Add(new DataColumn("c", typeof(string)));            dt.Columns.Add(new DataColumn("d", typeof(string)));            dt.Rows.Add("qq", "ss", "dd", "fg");            dt.Rows.Add("qq", "ss", "dd", "reb");            dt.Rows.Add("qq", "acd", "dd", "fg");            var result = dt.AsEnumerable().GroupBy(r => new { a = r["a"].ToString(), b = r["b"].ToString(), c = r["c"].ToString() }).Where(g => g.Count() > 1).Count() > 0;                        Console.WriteLine("result: " + result.ToString());            Console.ReadKey();
[解决办法]
DataTable dt = new DataTable();
dt.Columns.Add("a",typeof(string));
dt.Columns.Add("b",typeof(string));
dt.Columns.Add("c",typeof(string));
dt.Columns.Add("d",typeof(string));
dt.LoadDataRow(new object[] { "qq", "ss", "dd", "fg" }, false);


dt.LoadDataRow(new object[] { "qq", "ss", "dd", "reb" }, false);
dt.LoadDataRow(new object[] { "qq", "acd", "dd", "tbg" }, false);
var s = dt.AsEnumerable().GroupBy(t => t.Field<string>("a") + t.Field<string>("b") + t.Field<string>("c")).Where(t => t.Count() > 1);
foreach (var temp in s)
{
Response.Write(string.Format("重复数据:{0},重复个数:{1}", temp.Key, temp.Count()));
}

热点排行