首页 > 解决方案 > 如何一次使用多个值检查 DataSet 中是否存在表?

问题描述

我有两个表集:

一个实体(值“-1”到“-7”)和一个静态数据(值“-8”到“-11”)。

静态数据表依赖实体表来成功验证。我正在尝试检查静态数据表是否存在而实体表不存在,如果存在,则将异常附加到异常 StringBuilder 上。

下面的代码完成了这项工作并按预期工作,但是,它令人眼花缭乱,我相信必须有更好的方法来做到这一点。我在谷歌上看过,但我发现没有一个似乎与这个特定场景有关。

//Check Entities (Company, Trust, Individual) exist to link static data (Address, Email, Bank Account, Phone Number) to, if not add exception
if ((!imports.Tables.Contains("-1") && !imports.Tables.Contains("-2") && !imports.Tables.Contains("-3") &&
    !imports.Tables.Contains("-4") && !imports.Tables.Contains("-5") && !imports.Tables.Contains("-6") &&
    !imports.Tables.Contains("-7")) && imports.Tables.Contains("-8") && imports.Tables.Contains("-9") &&
    imports.Tables.Contains("-10") && imports.Tables.Contains("-11"))
{
    exception.Append("No Entity Found: Address, Email, Bank Account & Phone Number require an Entity (Trust, Company, Individual) to be created to pass validation.");
    exception.AppendLine();
}

我试图将这些值添加到列表中并在列表上进行比较,但没有成功,下面是我为其中一个表收集的内容:

List<string> staticData = new List<string>{ staticData.Add("-8"); staticData.Add("-9"); staticData.Add("-10"); staticData.Add("-11")}

if((imports.Tables.Contains(staticData) {} // Didn't expect this to work without looping through the list but that wouldn't be ideal in an if statement. 

以为我会来这里寻求帮助。

标签: c#linqdatatablecontains

解决方案


创建两个列表并用于.All()测试,如果数字 in Tablesnot exist instaticData1和 exists in staticData2,如以下代码:

List<string> staticData1 = new List<string>
{
    "-1","-2","-3","-4","-5","-6","-7"
};

List<string> staticData2 = new List<string>
{
    "-8","-9","-10","-11"
};

if (imports.Tables != null 
    && imports.Tables.Count > 0
    && staticData1.All(x => !Tables.Contains(x)) 
    && staticData2.All(x => Tables.Contains(x)))
{
    exception.Append("No Entity Found: Address, Email, Bank Account & Phone Number require an Entity (Trust, Company, Individual) to be created to pass validation.");
    exception.AppendLine();
}

我希望你觉得这有帮助。


推荐阅读