bool isExist = objCustomization.CustomSettings.Where(p => p.CustomizationType == selCustomizationType && p.CategoryID == selCategoryID).Any();
if (isExist)
{
chkFixLimit.Checked = objCustomization.CustomSettings.Where(p => p.CustomizationType == selCustomizationType && p.CategoryID == selCategoryID).FirstOrDefault().IsDefaultLimit;
}
else chkFixLimit.Checked = false;
答案 0 :(得分:5)
布尔值的默认值为false
,因此您甚至不需要任何条件 - 只需选择第一个或默认IsDefaultLimit
值:
chkFixLimit.Checked =
objCustomization.CustomSettings
.Where(p => p.CustomizationType == selCustomizationType && p.CategoryID == selCategoryID)
.Select(p => p.IsDefaultLimit)
.FirstOrDefault();
UPDATE(回答你的评论),如果你有非布尔值或默认值(整数为零)不符合你的要求,DefaultIfEmpty你可以提供自己的默认值,如果没有匹配的项目你的情况:
maxCountCmb.SelectedIndex =
objCustomization.CustomSettings
.Where(p => p.CustomizationType == selCustomizationType && p.CategoryID == selCategoryID)
.Select(p => p.DefaultFreeCount)
.DefaultIfEmpty(-1)
.First();
答案 1 :(得分:3)
当然可以:
var item = objCustomization.CustomSettings.FirstOrDefault(p => p.CustomizationType == selCustomizationType && p.CategoryID == selCategoryID);
chkFixLimit.Checked = item != null && item.IsDefaultLimit;
或单一陈述,如您所愿:
chkFixLimit.Checked = new Func<bool>(() => {
var item = objCustomization.CustomSettings.FirstOrDefault(p => p.CustomizationType == selCustomizationType && p.CategoryID == selCategoryID);
return item != null && item.IsDefaultLimit;
}).Invoke();
答案 2 :(得分:2)
这不是一行,但它更具可读性,你可以改变:
var setting = objCustomization.CustomSettings
.FirstOrDefault(p => p.CustomizationType == selCustomizationType
&& p.CategoryID == selCategoryID);
chkFixLimit.Checked = setting == null ? false : setting.IsDefaultLimit;
答案 3 :(得分:2)
chkFixLimit.Checked = objCustomization.CustomSettings
.Where(p => p.CustomizationType == selCustomizationType
&& p.CategoryID == selCategoryID)
.Select(c => c.IsDefaultLimit)
.FirstOrDefault();
答案 4 :(得分:1)
该代码或多或少是FirstOrDefault
方法的用例。如果存在某些内容,则返回第一个此类项,如果不存在,则返回默认值(null
作为参考类型)。所以你可以这样做:
var item = objCustomization.CustomSettings.FirstOrDefault
(p => p.CustomizationType == selCustomizationType && p.CategoryID)
因此,item
对象将为null
(假设您确实使用了引用类型),或者它将具有值。
之后你可以用一个简单的
chkFixLimit.Checked = (item == null) ? false : item.IsDefaultLimit;