数据-linq to sql 查询问题,请指教

问题描述

linq to sql 查询问题,请指教

我有三个表,A表:id,departmentcode,suppliercode
b表:departmetcode
c表“suppliercode怎么样用linq to sql 把这三个表连接起来。然后根据A表的查询条件显示呀比如A表的id=1,我一查询就出现多条记录, 我现在是想显示一条记录,然后把b表,c表的数据代出来。

解决方案

var result =from a in tableA
join b in Tableb on
a.depattmentcode equals b.code
join c in tablec on
a.suppliercode equals c.supppliercode
where a.id=1
select new { a.id,a.departmentcod,supplercode ,b.xxx,c.xxx}

解决方案二:

你应该用groupjoin

解决方案三:

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class A
    {
        public int id { get; set; }
        public int departmentcode{ get; set; }
        public int suppliercode { get; set; }
    }
    class B
    {
        public int departmentcode { get; set; }
    }
    class C
    {
        public int suppliercode { get; set; }
    }
    class Program
    {
        static void Main(string[] args)
        {
            List<A> la = new List<A>()
            {
                new A { id = 1, departmentcode = 1, suppliercode = 1 },
                new A { id = 1, departmentcode = 1, suppliercode = 2 },
                new A { id = 1, departmentcode = 2, suppliercode = 1 },
                new A { id = 2, departmentcode = 1, suppliercode = 1 }
            };
            List<B> lb = new List<B>()
            {
                new B { departmentcode = 1 },
                new B { departmentcode = 2 }
            };
            List<C> lc = new List<C>()
            {
                new C { suppliercode = 1 },
                new C { suppliercode = 2 }
            };
            Console.WriteLine("join");
            var query1 = from a in la
                         join b in lb on a.departmentcode equals b.departmentcode
                         join c in lc on a.suppliercode equals c.suppliercode
                         where a.id == 1
                         select new { a.id, a.suppliercode, a.departmentcode };
            foreach (var item in query1)
                Console.WriteLine(item);
            Console.WriteLine("group join");

            var query2 = from a in la
                         join b in lb on a.departmentcode equals b.departmentcode
                         join c in lc on a.suppliercode equals c.suppliercode
                         where a.id == 1
                         group a by a.id into g
                         select new { a = g.Key, b = g.Select(x => x.departmentcode), c = g.Select(x => x.suppliercode) };
            foreach (var item in query2)
            {
                Console.WriteLine(item.a);
                foreach (var b in item.b)
                    Console.WriteLine("t" + b);
                foreach (var c in item.c)
                    Console.WriteLine("t" + c);
            }

        }
    }
}

解决方案四:

join
{ id = 1, suppliercode = 1, departmentcode = 1 }
{ id = 1, suppliercode = 2, departmentcode = 1 }
{ id = 1, suppliercode = 1, departmentcode = 2 }
group join
1
1
1
2
1
2
1
Press any key to continue . . .

解决方案五:

我也是按这个来写的。为什么反回的时候是两条相同的数据呀

时间: 2024-11-08 18:34:17

数据-linq to sql 查询问题,请指教的相关文章

数据-linq to sql 子类过滤

问题描述 linq to sql 子类过滤 在WPF中,通过O/R设计器创建了linq to sql 类并创建了关联,怎么在设计器里设定子类过的滤条件,我要在datagrid中显示父子数据 是在Oncreated()中还是Onloaded()编写代码还是在其它地方 解决方案 设定子类过的滤条件 是什么意思? 可以在 Onloaded()里进行数据绑定操作到grid 解决方案二: 直接写linq绑定给数据源就可以了.如果你是在界面加载的时候就显示数据,就写在onloaded里面.如果是点一个按钮查

LINQ to SQL查询结果的数据匹配

问题描述 各位大神,我用LINKtoSQL查询数据库,将返回结果直接绑定到DATAGRIDVIEW会出现二进制图片无法显示的问题代码如下linqDataContextlinq=WelcomeForm.linq;varresult=frominfoinlinq.tb_Expressingselectnew{info.Image_min};dataGridView1.DataSource=result; 这查询的是tb_Expressing下的Image_min,里面存的是图片的二进制流,用data

利用LINQ TO SQL类,如何联结2个表查询数据?

问题描述 数据库中我有2个表,分别是:student表:intID;varchar(50)Name;class表:intID;intstudentID(外码);在vs2008中新建一个LINQToSQl类后自动生成代码我就不写了.然后我有一个页面a.aspx,得知一个class的ID后,想到得到其中所有学生的id,然后用代码方式绑定到gridview中输出.在这里,我不太知道怎么用lingtosql的语言查询,请指教:protectedvoidPage_Load(objectsender,Eve

Linq to SQL对象的标识

很多朋友都向我提过,希望我写一下关于Linq to SQL 或者 VS 插件方面的文章.尽管市面上有很多 Linq to SQL 的书籍,但是都是介绍怎么用,缺乏深度.关于 VS 插件方面的书籍也是很显浅,按书籍做出来的东西,只能是学生级别的东西,根本拿不出手.他们觉得我有这个能力写好. 从技术能力的角度来说,的确是不存在什么问题,但是,要把一门技术讲精讲透,是花很时间的事情.自己付出了很多,如果不能得到读者的认同,那这个专题写下去也没什么意义了.这个专题不是教你怎么使用Linq to SQL,

LINQ to SQL语句(14)之Null语义和DateTime

Null语义 说明:下面第一个例子说明查询ReportsToEmployee为null的雇 员.第二个例子使用Nullable<T>.HasValue查询雇员,其结果与第一个例 子相同.在第三个例子中,使用Nullable<T>.Value来返回 ReportsToEmployee不为null的雇员的ReportsTo的值. 1.Null 查找不 隶属于另一个雇员的所有雇员: var q = from e in db.Employees where e.ReportsToEmplo

如何编写更好的SQL查询:终极指南(上)

结构化查询语言(SQL)是数据挖掘分析行业不可或缺的一项技能,总的来说,学习这个技能是比较容易的.对于SQL来说,编写查询语句只是第一步,确保查询语句高效并且适合于你的数据库操作工作,才是最重要的.这个教程将会提供给你一些步骤,来评估你的查询语句. 首先,应该了解学习SQL对于数据挖掘分析这个工作的重要性; 接下来,应该先学习SQL查询语句的处理和执行过程,以便可以更好的了解到,编写高质量的查询有多重要.具体说来就是,应该了解查询是如何被解析.重写.优化和最终评估的; 掌握了上面一点之后,你不仅

如何编写更好的SQL查询:终极指南-第一部分

结构化查询语言(SQL)是数据挖掘分析行业不可或缺的一项技能,总的来说,学习这个技能是比较容易的.对于SQL来说,编写查询语句只是第一步,确保查询语句高效并且适合于你的数据库操作工作,才是最重要的.这个教程将会提供给你一些步骤,来评估你的查询语句. 首先,应该了解学习SQL对于数据挖掘分析这个工作的重要性; 接下来,应该学习SQL查询语句的处理和执行过程,以便可以更好的了解到,编写高质量的查询有多重要.具体说来就是,应该了解查询语句是如何被解析.重写.优化和最终评估的; 掌握了上面一点之后,你不

LINQ to SQL的执行可能无法复用查询计划

查询计划 Sql Server在执行一条查询语句之前都对对它进行"编译 "并生成"查询计划",查询计划告诉Sql Server的查询引擎 应该用什么方式进行工作.Sql Server会根据当前它可以收集到的各种信息(例 如内存大小,索引的统计等等)把一条查询语句编译成它认为"最优 "的查询计划.很显然,得到这样一个查询计划需要消耗CPU资源,而大部 分的查询语句每次经过编译所得到的查询计划往往是相同的,因此除非指定了 RECOMPILE选项,Sq

Linq to SQL之查询和添加

本文以Northwind数据库中的Customers和Orders表为例说明Linq to SQL的查询和添加是怎样操作的. 首先通过Linq to SQL File向导创建DataContext以及相应的Entity Class,如果不知道怎样做请看这 里:Defining data model classes 创建一个Customer对象,然后把该数据添加到数据库中去. NorthwindDataContext ctx = new NorthwindDataContext(); Custom