0
我有以下类别:多JLeft外部联接在LINQ
public class ItemGroupParameterBase : Master
{
public string Name { get; set; }
public int GroupID { get; set; }
}
public class ItemBase : Master
{
public string Name { get; set; }
public int GroupID { get; set; }
}
public class ItemParameter : Master
{
public int ItemID { get; set; }
public int GroupDetailID { get; set; }
public string Value { get; set; }
}
大师班有共同的ID。我需要显示ItemGroupParameterBase中的所有组参数名称和项目参数中的值。结果基于我从组合框中选择的项目。即使未找到该值,我也需要显示组参数名称。我尝试下面。
var source = from itemGroupParameters in _job.ItemGroupParameterList
join items in _job.ItemList.Where(x => x.ID == Convert.ToInt32(cmbItem.SelectedValue)) on itemGroupParameters.GroupID equals items.GroupID into g1
from featureNames in g1.DefaultIfEmpty()
join itemParameters in _job.ItemParameterList.Where(x => x.ItemID == Convert.ToInt32(cmbItem.SelectedValue)) on featureNames.ID equals itemParameters.GroupDetailID into g2
from itemSubParameters in g2
select new
{
FeatureName = featureNames.Name,
Value = (itemSubParameters != null ? itemSubParameters.Value : String.Empty)
};
它显示空引用。
在异常情况下做的细节显示任何其他细节?尝试在linq语句中放置一个断点并检查'cmbItem.SelectedValue'是否为空。 –
不,我检查了索引,然后只填充数据。如果我删除它正在工作的最后一个连接部分,左边的外部是问题。如果第三行从查询中删除,它正在工作,但只有数据在项目参数中可用时才会提供数据 – Akhil