C# 如何使用linq加入员工和性别列表
我已检索到一份员工名单。我的员工类列(employeeId、lastname、genderid)C# 如何使用linq加入员工和性别列表,c#,linq,C#,Linq,我已检索到一份员工名单。我的员工类列(employeeId、lastname、genderid) List Items=新列表 { 新员工{employeeid=1,lastname=“mike”,genderid=1}, 新员工{employeeid=2,lastname=“jeni”,genderid=2} }; 然后我有我的性别类列(id,标题) List genders=新列表 { 新的男性{id=1,title=“男性”}, 新的男性{id=2,title=“女性”} }; //然后
List Items=新列表
{
新员工{employeeid=1,lastname=“mike”,genderid=1},
新员工{employeeid=2,lastname=“jeni”,genderid=2}
};
然后我有我的性别类列(id,标题)
List genders=新列表
{
新的男性{id=1,title=“男性”},
新的男性{id=2,title=“女性”}
};
//然后我试着把检索到的员工名单和性别联系起来
var x=来自项目中的emp
两性交融
关于emp.genderid等于sex.id
从a.DefaultIfEmpty(新的m_genders())中的b转换为a
选择新的
{
emp.lastname,
根德里德皇帝,
性别=b.头衔
};
红色的错误行显示在关键字join中,表示“join子句中的一个表达式的类型不正确…”
我如何才能正确地加入它们?您的问题不清楚,代码可以正常工作:
namespace WindowsFormsApp1
{
public class m_genders
{
public int id;
public string title;
}
public class m_employees
{
public int employeeid { get; set; }
public int genderid { get; set; }
public string lastname { get; set; }
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
List<m_genders> genders = new List<m_genders>
{
new m_genders {id = 1, title = "Male"},
new m_genders {id = 2, title = "Female"}
};
List<m_employees> Items = new List<m_employees>
{
new m_employees{ employeeid = 1, lastname = "mike", genderid = 1 },
new m_employees{ employeeid = 2, lastname = "jeni", genderid = 2 }
};
var x = from emp in Items
join sex in genders
on emp.genderid equals sex.id
into a
from b in a.DefaultIfEmpty(new m_genders())
select new
{
emp.lastname,
emp.genderid,
sex = b.title
};
}
}
}
namespace WindowsFormsApp1
{
公共阶级男女平等
{
公共int id;
公共字符串标题;
}
公共级m_员工
{
public int employeeid{get;set;}
public int genderid{get;set;}
公共字符串lastname{get;set;}
}
公共部分类Form1:Form
{
公共表格1()
{
初始化组件();
}
私有无效按钮1\u单击(对象发送者,事件参数e)
{
列表性别=新列表
{
新的男性{id=1,title=“男性”},
新的男性{id=2,title=“女性”}
};
列表项=新列表
{
新员工{employeeid=1,lastname=“mike”,genderid=1},
新员工{employeeid=2,lastname=“jeni”,genderid=2}
};
var x=来自项目中的emp
两性交融
关于emp.genderid等于sex.id
变成
从a.DefaultIfEmpty(新m_genders())中的b开始
选择新的
{
emp.lastname,
根德里德皇帝,
性别=b.头衔
};
}
}
}
发生这种情况是因为emp.genderid和sex.id类型不同,您需要像这样显式地强制转换或转换它们:
(int)emp.genderid equals sex.id
我能够用以下类定义重现错误:
class m_genders
{
public int id { get; set; }
public string title { get; set; }
}
class employee
{
public int id;
public uint genderid;
public string lastname { get; set; }
}
完成。这只是一个employeespost m_employees和m_genders类的列表。你的代码运行良好!在这里查看:错误消息告诉您
m_genders.id
和m_employees.genderid
是不兼容的类型。由于上述情况并非如此,我非常确定此示例代码与实际代码不同。可能您使用int表示一个,使用string表示另一个。然后你要么改变它,要么使用int.Parse
或int.ToString
使它们兼容(我创建了一个Employee类,而不是自动生成的m_employees和m_genders,它工作得很好。所以问题出在自动生成的类中哇!你明白了!你说得对!!m_genders.id默认为uint,因为它是主键,并且从genders表中自动递增。)
(int)emp.genderid equals sex.id
class m_genders
{
public int id { get; set; }
public string title { get; set; }
}
class employee
{
public int id;
public uint genderid;
public string lastname { get; set; }
}