这段linq语句是什么意思

来源:百度知道 编辑:UC知道 时间:2024/06/15 20:15:43
有4个模型
Organization_Master (...org_id...)
Company_Master(...Org_ID,Name1....)
Office_Master(...Org_ID,Name1....)
Department_Master(...Org_ID,Name1....)
-------------------------------------------
public string FindOrgName(int org_id)
{
string org_name = "";
var org_m =
from o in db.db.Organization_Master
where o.Org_ID == org_id
select new
{
Name1 = (
o.Org_type == 1 ? db.Company_Master.SingleOrDefault(cm => cm.Org_ID == org_id).Name1 :
o.Org_type == 2 ? db.Office_Master.SingleOrDefault(om => om.Org_ID == org_id).Name1 :
o.Org_type == 3 ? db.Department_Master.SingleOrDefault(dm => dm.Org_ID == org_id).Name1 :
""
)
};

这是在select出来的数据基础上新生成一个对象 ,这个只有一个属性Name1,
Name1是根据o.Org_type == 1的条件来生成的

? : 是问号表达式,a?b:c 是说如果a为真取b的值,否则取c的值. 它是自右向左结合的, 比如说a?b:c?d:e相当于a?b:(c?d:e)
结合你的问题, 就是当o.Org_type=1时取db.Company_Master.SingleOrDefault(cm => cm.Org_ID == org_id).Name1,
否则如果o.Org_type=2取db.Office_Master.SingleOrDefault(om => om.Org_ID == org_id).Name1
否则如果o.Org_type=3取db.Department_Master.SingleOrDefault(dm => dm.Org_ID == org_id).Name1 否则取""