C#用LINQ *** 作Datatable数据库

C#用LINQ *** 作Datatable数据库,第1张

假设你上图表格数据为 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只能用于查询吗、对数据库的 *** 作出现了问题.等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/sjk/10152333.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存