我有收藏品
从集合中,列名ma_position_value不应包含相同的值
例如
如果集合有5条记录,则列ma_position_value不应包含来自所有5条记录的相同值...但它可以包含来自集合的2或3或4条记录的相同值Atleast一列值应该更改。 / p>
所以主要内涵是所有5条记录不应该包含相同的值。任何一个都应该得到不同的值。所以如果所有5条记录相同我试着抛出一条消息
所以我只是写一个bool来返回它,如果它是改变
bool lblMa = false;
lblMa = ibusCalcWiz.iclbMssPaServiceSummary
.Where(lbusMssPaServiceSummary => lbusMssPaServiceSummary.icdoSummary.ma_position_value.IsNotNullOrEmpty()).Distinct().Count() > 1;
但它总是回归真实。
答案 0 :(得分:3)
只需选择不同的ma_position_value
属性值:
bool allSame = ibusCalcWiz.iclbMssPaServiceSummary
.Select(i => i.ma_position_value)
.Distinct()
.Count() == 1;
提示:不要在lambda表达式中使用长变量名。有一个经验法则 - 变量使用范围越大,名称越大。如果范围非常小(lambda表达式),那么名称应该非常小(单个字母就足够了)。
答案 1 :(得分:0)
你可以得到第一个,并检查它们是否相等:
// Only works if the collection is non-empty!
string first_ma_position_value = ibusCalcWiz.iclbMssPaServiceSummary.First().ma_position_value;
bool allTheSame = ibusCalcWiz.iclbMssPaServiceSummary
.All(lbusMssPaServiceSummary.icdoSummary.ma_position_value == first_ma_position_value);
或者您可以按照您原来的要求执行不同的操作,但是可以使用列的值而不是对象
bool allTheSame = ibusCalcWiz.iclbMssPaServiceSummary
.Select(lbusMssPaServiceSummary => lbusMssPaServiceSummary.icdoSummary.ma_position_value)
.Distinct()
.Count() == 1;