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;
问问题
70 次
5 回答
5
布尔值的默认值是false
你甚至不需要任何条件 - 只需选择第一个或默认IsDefaultLimit
值:
chkFixLimit.Checked =
objCustomization.CustomSettings
.Where(p => p.CustomizationType == selCustomizationType && p.CategoryID == selCategoryID)
.Select(p => p.IsDefaultLimit)
.FirstOrDefault();
更新(回答您的评论)如果您有非布尔值或默认值(整数为零)不符合您的要求,如果没有符合您的条件的项目,您可以使用DefaultIfEmpty提供自己的默认值:
maxCountCmb.SelectedIndex =
objCustomization.CustomSettings
.Where(p => p.CustomizationType == selCustomizationType && p.CategoryID == selCategoryID)
.Select(p => p.DefaultFreeCount)
.DefaultIfEmpty(-1)
.First();
于 2013-08-12T09:33:59.140 回答
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();
于 2013-08-12T09:31:58.223 回答
2
这不是一行,但更具可读性,您可以更改:
var setting = objCustomization.CustomSettings
.FirstOrDefault(p => p.CustomizationType == selCustomizationType
&& p.CategoryID == selCategoryID);
chkFixLimit.Checked = setting == null ? false : setting.IsDefaultLimit;
于 2013-08-12T09:31:56.717 回答
2
chkFixLimit.Checked = objCustomization.CustomSettings
.Where(p => p.CustomizationType == selCustomizationType
&& p.CategoryID == selCategoryID)
.Select(c => c.IsDefaultLimit)
.FirstOrDefault();
于 2013-08-12T09:43:58.560 回答
1
该代码或多或少是该FirstOrDefault
方法的用例。如果存在,则返回第一个这样的项目,如果不存在,则返回默认值(null
对于引用类型)。所以你可以这样做:
var item = objCustomization.CustomSettings.FirstOrDefault
(p => p.CustomizationType == selCustomizationType && p.CategoryID)
结果,该item
对象将是null
(假设您确实使用引用类型),或者它将具有一个值。
之后你可以检查一下,用一个简单的
chkFixLimit.Checked = (item == null) ? false : item.IsDefaultLimit;
于 2013-08-12T09:37:31.733 回答