
假设你上图表格数据为 DataTable dt,列分别为AA,BB,CC,DD
var query = from p in dtAsEnumerable()
//分组
group p by new
{
t1 = pField<int>("AA")ToString()Substring(0, pField<int>("AA")ToString()Length - 2),
t2 = pField<double>("BB"),
t3 = pField<string>("CC")
} into g
select new
{
ColA = gKeyt1,
ColB = gKeyt2,
ColC = gKeyt3,
ColD = gSum(c => cField<int>("DD"))
};
//转datatable
DataTable dtNew = dtClone();
DataRow drNew;
foreach (var p in query)
{
drNew = dtNewNewRow();
drNew["AA"] = pColA;
drNew["BB"] = pColB;
drNew["CC"] = pColC;
drNew["DD"] = pColD;
dtNewRowsAdd(drNew);
}
dtNew 为最终结果
注:转换过程中要考虑空值的情况
linq全称是Language INtegrated Query,表示集成化查询语言,你不能用它做更新,如果有这方面需要,可以使用传统ADONET或者微软发布的Entity Framework来更新数据。
NSERT
语句与
FOREIGN
KEY
约束"FK_VoteOptions_z_VoteInfo"冲突。该冲突发生于数据库"vote",表"dboz_VoteInfo",
column
'Vote_ID'。
不知道你数据库了解多少,从上面的例子来看是数据库内部出现问题而这个错误是很常见的!
如果你有两个表
比如说
学生表,学生成绩表
学生表当然是记录学生的基本资料的
这个表里面有一个pkid也就是自动编号
好
学生成绩表里面有一个typeid绑定于学生表的自动编号(foreign
key),这样做的好处就是没有存储重复的数据,并且可以快速的联系到学生资料!
好
假如说你的学生表里面有3个同学,那么自动编号就有3个,分别对应于每一个同学,假设自动编号的值分别是1,2,3,那么这个时候插入到学生成绩表的时候的那个typeid字段的值就只能是1,2,3的其中一个,否则就会如提示你的错误一样
我想我应该描述清楚了!
其实你可以删除掉约束,但是这样做的后果就是很有可能让你的数据对应出现混乱!
我给你写一个数据库的例子
--用户表以及用户blog表
create
table
userinfo
(
id
int
primary
key
identity(1,1),
name
varchar(30)
unique
not
null,
age
tinyint
check(age>0
and
age<=120)
)
--为了简单,就只有一个文章标题,分类也去掉
create
table
blogs
(
id
int
primary
key
identity(1,1),
typeid
int
constraint
myfk
foreign
key(typeid)
references
userinfo(id),
caption
varchar(50),
)
insert
into
userinfo
values
('a',3)
select
from
userinfo
--自动编号为1,反正blogs的typeid字段的值只能是userinfo中的id字段的值的其中一个,如果
--插入userinfo字段没有的数据到typeid中,那么就会错误
insert
into
blogs
values
(2,'a')--错误
insert
into
blogs
values
(1,'a')--正确
--insert
into
blogs
values
(2,'a')这个语句是错误的,如果你非要这样,那么只能够删掉约束
alter
table
blogs
drop
constraint
myfk--myfk是约束名,对应于你的是FK_VoteOptions_z_VoteInfo
insert
into
blogs
values
(2,'a')--这个时候就可以插入了,但是数据就不能正确对应了!
说了这么多,我想你应该可以明白!
1LINQ:Language Integrated Query 语言集成查询。
2LINQ通过对象的方式对数据库进行描述。
3LINQ是一种能够快速对大部分数据源进行访问和数据整合的一种技术,使用相同的基本查询表达式模式类查询和转换SQL数据库、ADONET数据集、XML文档和流已经NET集合中的数据。
4使用方法:
LINQ to Objects
LINQ to DataSet
LINQ to SQL
LINQ to Entities
LINQ to XML
以上就是关于C#用LINQ *** 作Datatable数据库全部的内容,包括:C#用LINQ *** 作Datatable数据库、linq只能用于查询吗、对数据库的 *** 作出现了问题.等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)