linq 去除重复 和 得到某一列数据的和

zzc_king 2011-05-13 01:05:17

private void GvDataBind()
{

var contracts = from c in db.B_Contract_Out
join h in db.B_Hospital on c.HospitalID equals h.ID into ch
where c.C4 == "1"
from chs in ch.DefaultIfEmpty()
join u in db.sys_User on c.PrincipalUser equals u.UserID into cu
from cus in cu.DefaultIfEmpty()
orderby c.ContractDate descending
join p in db.B_PayRecord on c.ID equals p.ContractID into cp
from cps in cp.DefaultIfEmpty()
where c.AllMoney != Convert.ToDouble(cps.PayMoney)
//where c.AllMoney!= payedmoney
orderby c.ContractDate descending
select new { ArmNames = GetArmariumName(c.ID), ArmOutPrice = GetArmOutPrice(c.ID), c.C1, c.ID,
c.ContractDate,c.ContactNum, cus.U_CName, c.AllMoney, chs.HospitalName, qiankuan = GetQianKuan(Convert.ToDouble(c.AllMoney), c.ID) };

var query = from c in contracts
group c by c.ContactNum into g
select new { contactNum = g.Key, Sum = g.Sum(x => x.qiankuan) };

this.DataPager.RecordCount = contracts.Count();
this.DataPager.RecordCount = query.Count();
//.net的自定义分页
PagedDataSource pds = new PagedDataSource();
pds.AllowPaging = true;
pds.PageSize = PAGESIZE;
pds.CurrentPageIndex = DataPager.CurrentPageIndex - 1;
pds.DataSource = contracts.ToList();
pds.DataSource = query.ToList();
GvContract.DataSource = pds;
GvContract.DataBind();
}

...全文
1189 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzc_king 2011-05-16
  • 打赏
  • 举报
回复
JustACoder 谢谢你, 有点眉目了 哈哈
zzc_king 2011-05-16
  • 打赏
  • 举报
回复
正在纠结呢 。。。
简小姐 2011-05-16
  • 打赏
  • 举报
回复
谁解决了linq去重问题,给解决一下:
得到的一个集合结果集中怎么去掉重复数据
zzc_king 2011-05-16
  • 打赏
  • 举报
回复
查询两个时间段之间的数据怎么写,我传过来两个值 linq条件怎么写啊
from c in db.B_Contract_Out
join h in db.B_Hospital on c.HospitalID equals h.ID into ch
where c.C4 == "1"
机器人 2011-05-16
  • 打赏
  • 举报
回复
contracts.ToList().Sum(c => c.qiankuan) 看看
zzc_king 2011-05-16
  • 打赏
  • 举报
回复
不知道怎么搞的 老是报错 。。
zzc_king 2011-05-16
  • 打赏
  • 举报
回复
唉 纠结了。。。
机器人 2011-05-16
  • 打赏
  • 举报
回复
不懂你们具体contact什么业务,你应该问问懂的人。
如果业务数据出现冗余重复,那么需要检查join的关联主键是否少了。

sorry,少写点东西。。。

TextBox1.Text = contracts.Sum(c => c.qiankuan).FirstOrDefault();

这个就是总合计。。。
zzc_king 2011-05-16
  • 打赏
  • 举报
回复
ContactNum 重复, 而且TextBox1.Text = contracts.Sum(c => c.qiankuan); 还报错:.....<>h__TransparentIdentifier5.<>h__TransparentIdentifier4.<>h__TransparentIdentifier3.<>h__TransparentIdentifier2.<>h__TransparentIdentifier1.<>h__TransparentIdentifier0.c.ID))).Sum(c => c.qiankuan)”转换为 SQL 并且无法将它视为局部表达式。
机器人 2011-05-16
  • 打赏
  • 举报
回复
contracts 里的重复吗?哪些字段重复了?
zzc_king 2011-05-16
  • 打赏
  • 举报
回复
重复字段 怎么还是去除不了呢
简小姐 2011-05-16
  • 打赏
  • 举报
回复
最简单的方法是分组,取最大值
机器人 2011-05-13
  • 打赏
  • 举报
回复
厄,如果你现有的contracts没有重复
xxx.DataBind();
之后
TextBox1.Text = contracts.Sum(c => c.qiankuan);
zzc_king 2011-05-13
  • 打赏
  • 举报
回复
可是我怎么用TextBox接受这个数据呢,我是用GridView绑定的数据,我在GridView下面放了个文本框用来显示总金额,我怎么绑定啊?
感谢万分
机器人 2011-05-13
  • 打赏
  • 举报
回复
你现在要替换 contracts 啊?
跑偏了。。。

contracts 里那么多字段呢。。。你对欠款的合计,单独求就好了啊。
没必要应加到contracts集合里啊。
zzc_king 2011-05-13
  • 打赏
  • 举报
回复
最近 刚找到工作,以前没用过linq做过项目,现在一上来就就用linq 我这是从别人手里接来的,麻烦你了。。。
zzc_king 2011-05-13
  • 打赏
  • 举报
回复
是的 就是这样,但是
DataBinding:“<>f__AnonymousType11`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.Double, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]”不包含名为“ID”的属性。
读不出来 数据
在linq语句下面还有个分页控件呢:
//this.DataPager.RecordCount = contracts.Count();
this.DataPager.RecordCount = query.Count();
//.net的自定义分页
PagedDataSource pds = new PagedDataSource();
pds.AllowPaging = true;
pds.PageSize = PAGESIZE;
pds.CurrentPageIndex = DataPager.CurrentPageIndex - 1;
//pds.DataSource = contracts.ToList();
pds.DataSource = query.ToList();
GvContract.DataSource = pds;
GvContract.DataBind();
机器人 2011-05-13
  • 打赏
  • 举报
回复
var query = from c in contracts.ToList()
group c by c.ContactNum into g
select new { contactNum = g.Key, Sum = g.Sum(x => x.qiankuan) };
zzc_king 2011-05-13
  • 打赏
  • 举报
回复
这是一个方法,不是存储过程也可以的,只是我去除重复和得到一列数据的总和 不知道怎么做了,能不能还在上面那一个linq语句上做???纠结啊
机器人 2011-05-13
  • 打赏
  • 举报
回复
GetQianKuan(Convert.ToDouble(c.AllMoney), c.ID)
如果不是存储过程,不能用在linq2sql里。

你可以把c.AllMoney什么的都查出来之后(ToList())之后,再处理。
加载更多回复(8)

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧