Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用Linq引用DataTable列

使用Linq引用DataTable列
EN

Stack Overflow用户
提问于 2012-11-11 08:24:51
回答 1查看 316关注 0票数 1

我正在尝试使用linq连接两个数据表

代码语言:javascript
运行
AI代码解释
复制
var invoices420 = dt420_.AsEnumerable();
var invoices430 = dt430_.AsEnumerable();

            var query = from inv430 in invoices430
                        join inv420 in invoices420 on inv430.LinkDoc equals inv420.LinkDoc
                        orderby inv430.SID
                        select new
                {
                    LinkDoc = inv430.LinkDoc,
                    TotalIn = Math.Round(inv430.Credit, 2),
                    TotalOut = ((inv420 == null) ? 0 : Math.Round(inv420.Debit, 2))

                };

联接似乎不是问题,但我得到一个错误“System.Data.DataRow”不包含“LinkDoc”的定义,并且找不到接受“System.Data.DataRow”类型的第一个参数的扩展方法“LinkDoc”(是否缺少using指令或程序集引用?)。

在不使用inv40.Field(“linkdoc”)的情况下引用DataTable中的列(例如inv430.LinkDoc ),我必须做什么?

如果我想对结果集执行group by,我会考虑

代码语言:javascript
运行
AI代码解释
复制
var q2 = query
         .GroupBy(item => item.LinkDoc);

return q2.ToArray();

问题是在q2中我没有得到所有的列(linkdoc,totalin,totalout)。

原始数据是

代码语言:javascript
运行
AI代码解释
复制
dt420_
Linkdoc   Credit
Invoice1  500
Invoice2  100
Invoice3  200

dt430_
LinkDoc   Debit
Invoice1  100
Invoice1  100
Invoice2  200

Result would be
LinkDoc    TotalIn(Credit)  TotalOut(Debit)
Invoice1   500              200
Invoice2   100              200
Invoice3   200              0
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-11 09:38:55

您需要将直接调用的所有位置替换为属性,如

代码语言:javascript
运行
AI代码解释
复制
inv430.LinkDoc

代码语言:javascript
运行
AI代码解释
复制
inv430["LinkDoc"]

inv430是一个DataRow,所以你需要使用获取字符串的索引器。

编辑:您的连接将带来错误的数据(请参阅下面的评论)。您需要使用以下代码:

代码语言:javascript
运行
AI代码解释
复制
var group430 = from inv430 in invoices430
               group inv430 by inv430["LinkDoc"].ToString().Trim() into g
               select new
               {
                    LinkDoc = g.Key.ToString().Trim(),
                    TotalOut = g.Sum(inv => Math.Round((decimal)inv["Debit"], 2))
               };

var group420 = from inv420 in invoices420
               group inv420 by inv420["LinkDoc"].ToString().Trim() into g
               select new
               {
                    LinkDoc = g.Key.ToString().Trim(),
                    TotalIn = g.Sum(inv => Math.Round((decimal)inv["Credit"], 2))
               };

var result = from inv430 in group430
             join inv420 in group420 on inv430.LinkDoc equals inv420.LinkDoc into inv
             from inv420 in inv.DefaultIfEmpty()
             select new
             {
                 inv430.LinkDoc,
                 TotalOut = inv430.TotalOut,
                 TotalIn = inv420 != null ? inv420.TotalIn : 0
             };
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13329640

复制
相关文章
安卓关闭按键灯_怎么关闭电脑键盘灯光
还在因为看电子书和看电影时键盘灯刺眼而苦恼吗?下面提供一个方法关闭键盘灯,让你轻松DIY!
全栈程序员站长
2022/09/19
2K0
安卓自定义View
attrs.xml 详解 我们在使用组件属性的时候经常会使用 android:layout_width="wrap_content" android:layout_height="wrap_conte
先知先觉
2019/01/21
4140
安卓手机彻底关闭“已登录到Wlan网络”或者“登录到网络”的提示
安卓部分机型会在连接到wifi的时候不停地提示“已登录到Wlan网络”或者“登录到网络”,不小心点开那个提示就跳到一些广告网站了,这是由于原生安卓系统中开机后Google服务器会发送请求连接。当然,在国内,Google是无法访问的,一些手机厂家的工程师就把这个连接服务器设到了一些广告网站,让无数人心烦,下面教您彻底关闭“已登录到Wlan网络”或者“登录到网络”的提示。
迷你日志
2022/04/20
6.3K2
安卓手机彻底关闭“已登录到Wlan网络”或者“登录到网络”的提示
安卓自定义列表dialog
这个形式也是最常用的,不过最近需要用到列表信息Dialog,原生的不光样式不能满足需求,而且是开发电视端的APP,需要对焦点进行特殊处理,所以就需要自定义Dialog
先知先觉
2019/01/21
1.4K0
安卓凹凸自定义View
那到这个需求感觉还是很简单的,让美术出了一张图,然后我把这个背景图做成了.9图,然而,并没有什么卵用,最大的原因就是background被拉伸、挤压,高度在不同的机型显示的不一样,但是图片的半圆缺角是不变的,所以想想还是写个View。
萬物並作吾以觀復
2018/09/13
6780
安卓凹凸自定义View
安卓自定义 View 启航
先总结下自定义 View 的步骤: 自定义 View 的属性 在 View 的构造方法中获得我们自定义的属性 [重写 onMeasure] 重写 onDraw 我把3用[]标出了,所以说3不一定是必须
acc8226
2022/06/19
2600
安卓自定义 View 启航
安卓开发_浅谈自定义组件
  在Android中,所有的UI界面都是由View类和ViewGroup类及其子类组合而成。其中,View类是所有UI组件的基类,而ViewGroup类是容纳这些UI组件的容器。 其本身也是View
听着music睡
2018/05/18
8430
安卓自定义Dialog的实现
一、Dialog布局文件 <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.andro
先知先觉
2019/01/21
1K0
[android] 安卓自定义样式和主题
简单练习自定义样式和主题,样式是加在View上,主题是加在Application或者Activity上
唯一Chat
2019/09/10
9510
[android] 安卓自定义样式和主题
安卓运动圆环自定义View
记得这个东西原来有个同事问过我,当时正在自学自定义View和属性动画这一块,对这个功能也没有写过,所以就google了一下,发了几个类似效果的github项目给朋友,今天礼拜天难得有心情写写代码,所以想想实现一下这个自定义View的效果。 首先,我们从这个gif的效果图中就可以得知这个自定义View我们需要哪些自定义属性,内部圆环的颜色、外部圆环的颜色、圆环的宽度、字体的大小、颜色,话不多说,直接撸码。
萬物並作吾以觀復
2018/09/13
7610
安卓运动圆环自定义View
安卓 toast_安卓toast使用
一个 toast 是在屏幕上弹出一条信息,它的大小总是包裹着需要显示的内容,并且当前的 Activity 依然是可见并且可互动的。toast会自动消失,并且不接受任何互动事件。因为 toast 可以在后台的 Service 中创建,所以即使这个应用程序没有显示在屏幕上,仍然可以弹出 toast.
全栈程序员站长
2022/10/01
6.6K0
关于安卓开发通过Toast显示消息提示框
Toast用于在屏幕中显示一个提示信息栏,该消息栏没有任何控制按钮,并且不会获得焦点,经过一定时间后自动消失。 作用:用于显示一些快速提示信息 有两种方式可以显示提示信息框 一: 调用Toast类的m
听着music睡
2018/05/18
1.5K0
如何从电脑直接控制安卓手机 监控安卓手机 安卓手机如何控制安卓手机
实用方法很简单,在手机上安装这个软件,然后运行,然后进入Setting,点击User's settings,然后Create new user(我新建了一个叫做ACE的用户),注意这里在豌豆荚的截图只是做教程用的,实际不需要连接豌豆荚,甚至不需要WIFI,只要你打开了GPRS
程序员小顾
2021/12/01
16.8K0
『安卓』安卓开发基础--基本控件
显示文字,相当于Panel。一般用来文本展示,继承自android.view.View,在android.widget包中。
风骨散人Chiam
2020/10/28
7.2K0
安卓逆向系列篇:安卓工具总结
JDK:Java Development Kit是Java的开发工具包,JDK包含了JRE,同时还包含了编译java源码的编译器javac,还包含了很多java程序调试和分析的工具。
亿人安全
2022/06/30
9.2K0
安卓逆向系列篇:安卓工具总结
安卓系统框架介绍(安卓常用框架)
——源码地址1: https://android.googlesource.com/
全栈程序员站长
2022/07/30
8.9K0
安卓系统框架介绍(安卓常用框架)
安卓适配
在开发的时候,发现红米一直安装不上APP。经过百度查询,发现是在开发设置中打开了启用MIUI优化设置,将其关掉,然后重启,然后接着开启USB安装,之前因为一直没网,没有注意这个,导致一些隐性的bug没有展示出来,粗心啊。
魔王卷子
2019/05/31
4.5K0
安卓UI
界面是布局和微件的层次结构形式构建而成。布局是 ViewGroup 对象,即控制其子视图在屏幕上的放置方式的容器。微件是 View 对象,即按钮和文本框等界面组件。
天天Lotay
2022/12/01
1.5K0
安卓UI
安卓intent
然后在主的界面里面使用Intent的另一个构造函数,直接将action的字符串穿进去
云深无际
2021/04/14
1.6K0
安卓intent
点击加载更多

相似问题

安卓让微调工具改变内容视图

14

安卓微调-onItemSelected

20

安卓微调setTextview

20

静态安卓微调?

20

安卓微调GetSelection

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文