我有一个表格,其中有4个字段是手机,我需要验证这4个字段都不会在其中重复。
我自己没有开发这个,这是由我们的一个开发人员完成的,所以我想知道是否有办法在linq或词典的一行中做到这一点?
private bool Celularesvalidation(string c1, string c2, string c3, string c4)
{
var rs = false;
if (!string.IsNullOrEmpty(c2))
{
if (c1 == c2)
{
rs = true;
}
}
if (!string.IsNullOrEmpty(c3))
{
if (c3 == c1 || c3 == c2)
{
rs = true;
}
}
if (!string.IsNullOrEmpty(c4))
{
if (c4 == c1 || c4 == c2 || c4 == c3)
{
rs = true;
}
}
return rs;
}
答案 0 :(得分:3)
只是一个想法:
var cellphones = new string[] { c1, c2, c3, c4 };
bool allDistinct = cellphones.Distinct().Count() == cellphones.Count();
答案 1 :(得分:1)
获取不同的记录并进行比较。
private bool Celularesvalidation(string c1, string c2, string c3, string c4)
{
var cellPhones = new[] { c1,c2,c3,c4};
var distinctCellPhones = cellPhones.Distinct();
return distinctCellPhones.Count() < cellPhones.Count();
}
答案 2 :(得分:1)
是的,如果你真的想,你可以在一行中完成。此示例还包括强制它们都不为null或为空:
private bool CelularesValidation(string c1, string c2, string c3, string c4)
{
return new[] { c1, c2, c3, c4 }.Where(c => !string.IsNullOrEmpty(c))
.Distinct().Count() == 4;
}
答案 3 :(得分:0)