读书人

请问 c# linq 2个表查询的有关问题

发布时间: 2013-09-26 10:32:35 作者: rapoo

请教 c# linq 2个表查询的问题
我有2个表分别是 tab1 \ tab2

tab1(员工表)结构如下:
列名 userid userName
1 张三
2 李四
------------------------
tab2(每月的工资表)结构如下
列名 userid 工资
1 1000
1 2000
2 4000
2 1000
------------------
现在要用linq 查询出 每个人当前合计发放了多少工资
--------------------
我用下面的linq查询对吗?调试倒是没有问题
from ff in tab1
join uu in tab2 on ff.userid equals uu.userid

----------------------------------------------

好了总体情况说明白了,问题是这样的
我现在用的是MVC 已经建立了相应的实体类
我该如何将2个表合成一个表,然后显示出来?
是不是需要再建立一个由2个表的join后所有列的实体类?
请告知。











c# linq mvc
[解决办法]

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

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
List<Staff> lstaff = new List<Staff>();
lstaff.Add(new Staff { Sid=1, Sname="李斯"});
lstaff.Add(new Staff { Sid = 2, Sname = "秦武" });
List<Salary> lsalary = new List<Salary>();


lsalary.Add(new Salary { Sid = 1, Payment = 1000 });
lsalary.Add(new Salary { Sid = 1, Payment = 2212 });
lsalary.Add(new Salary { Sid = 2, Payment = 2000 });
lsalary.Add(new Salary { Sid = 2, Payment = 4212 });

var query = from ff in lstaff.AsEnumerable()
join uu in lsalary.AsEnumerable() on ff.Sid equals uu.Sid
group uu by new { sid = uu.Sid,sname=ff.Sname } into d
select new StaffSalaryViewModel { Sid = d.Key.sid, Sname = d.Key.sname,PaymentSum=d.Sum(o=>o.Payment) };
query.ToList().ForEach(ss=>Console.WriteLine(ss.Sid+" "+ss.Sname+" "+ss.PaymentSum));
Console.ReadKey();
}
}

public class Staff
{
public int Sid { get; set; }
public string Sname { get; set; }
}

public class Salary
{
public int Sid { get; set; }
public double Payment { get; set; }
}

public class StaffSalaryViewModel
{
public int Sid { get; set; }
public string Sname { get; set; }


public double PaymentSum { get; set; }
}
}


[解决办法]
there is a simply way:

请问 c# linq  2个表查询的有关问题被楼主诱导了 不用join也行  

读书人网 >.NET

热点推荐