增加In方法,判断对象是否在目标数组中

This commit is contained in:
Falcon 2025-01-16 17:14:43 +08:00
parent 633f20e46a
commit 224ab2d621
3 changed files with 55 additions and 1 deletions

View File

@ -125,6 +125,26 @@ namespace Falcon.SugarApi.Test
Assert.IsTrue(fullCount > nFullCount);
}
/// <summary>
/// 测试In方法
/// </summary>
[TestMethod]
public void ObjectInTest() {
string obj = "abc";
Assert.IsTrue(obj.In("eee","abc","1231"));
Assert.IsFalse(obj.In("2313","eeee"));
var o1 = new object();
Assert.IsTrue(o1.In(o1));
Assert.IsFalse(o1.In( new object(),new object()));
var o2 = new ObjWithComparable { val = 1 };
var o22 = new ObjWithComparable { val = 1 };
var o23 = new ObjWithComparable { val = 1 };
Assert.IsTrue(o2.In(o22,o23));
}
}
/// <summary>
/// 扩展属性测试类
@ -157,4 +177,18 @@ namespace Falcon.SugarApi.Test
{
public string ItemA { get; set; } = "itema";
}
public class ObjWithComparable
{
public int val { get; set; }
public int CompareTo(ObjWithComparable? other) {
return this.val - other.val;
}
public override bool Equals(object? obj) {
var c = obj as ObjWithComparable;
return c == null ? false : c.val == this.val;
}
}
}

View File

@ -21,7 +21,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RabbitMqTest", "RabbitMqTes
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CSharpTest", "CSharpTest\CSharpTest.csproj", "{FA6A7A47-7EEE-4264-9C89-C2E717B1CB78}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NugetPluginTest", "NugetPluginTest\NugetPluginTest.csproj", "{3570FDA6-C408-4A61-852E-3B4F1DCAD1AD}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NugetPluginTest", "NugetPluginTest\NugetPluginTest.csproj", "{3570FDA6-C408-4A61-852E-3B4F1DCAD1AD}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution

View File

@ -208,6 +208,26 @@ namespace Falcon.SugarApi
targetBuilder?.Invoke(obj);
return obj as T;
}
/// <summary>
/// 判断对象是否在目标对象数组中。如果对象实现IComparable则使用IComparable比较对象否则使用Equals方法比较对象
/// </summary>
/// <typeparam name="T">对象类型</typeparam>
/// <param name="obj">当前对象</param>
/// <param name="values">目标对象数组</param>
/// <returns>在数组中返回True否则False</returns>
public static bool In<T>(this T obj,params T[] values) {
if(obj == null) {
return values.Any(a => a == null);
}
foreach(var i in values) {
if(obj.Equals(i)) {
return true;
}
}
return false;
}
}
/// <summary>