C# 搜索类是否包含特定属性

C# 搜索类是否包含特定属性,c#,settings,C#,Settings,我的项目中有一个设置文件,其中包含一些StringCollection(用户一个)。每个StringCollection都使用用户名命名,并包含此用户的一个或多个值。例如,如果用户名为“User1”,则设置将包含以下内容: <setting name="User1" serializeAs="Xml"> <value> <ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-ins

我的项目中有一个设置文件,其中包含一些
StringCollection
(用户一个)。每个
StringCollection
都使用用户名命名,并包含此用户的一个或多个值。例如,如果用户名为“User1”,则设置将包含以下内容:

<setting name="User1" serializeAs="Xml">
    <value>
        <ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
            <string>mail1@test.com</string>
            <string>mail2@test.com</string>
        </ArrayOfString>
    </value>
</setting>
在我的例子中,我有一个字段
Properties.Settings.Default.User1
。因此,
UserExists(“User1”)
必须为
True
UserExists(“User2”)
必须为
False

您可以将设置加载为,并在集合上调用
Contains()
,以确定您的用户是否存在

范例

private bool UserExists(String user)
{
    // Test if a StringCollection is named "user"
    return Properties.Settings.Default.User1.Contains(user);
}
编辑 您要做的是查找设置是否存在,因为您可以尝试类似的方法

private bool UserExist(string user)
{
   return Properties.Settings.Default.Properties.Cast<SettingsProperty>().Any(prop => prop.Name == user);
}
private bool UserExist(字符串用户)
{
返回Properties.Settings.Default.Properties.Cast().Any(prop=>prop.Name==user);
}

还是你在找这样的东西

private bool UserExists(String user)
{
   // Test if a StringCollection is named "user"
   return user == Properties.Settings.Default.name ;
}

你的问题不清楚,你的澄清混淆了问题。您的标题是“如果字符串文件包含字段,则搜索”,然后您声明希望查看您的设置是否包含某个用户,而您的说明似乎表明您需要集合的名称?由于该列表中的第一项和最后一项没有多大意义,我将回答第二项

根据扩展方法
.Contains()

下面是文档化示例的修改版本,它与您的问题更加吻合

using System;
using System.Collections;
using System.Collections.Specialized;

public class SamplesStringCollection
{
    public static void Main()
    {
        // Creates and initializes a new StringCollection.
        StringCollection myCol = new StringCollection
        {
            "mail1@gmail.com",
            "mail2@gmail.com",
            "mail3@gmail.com",
            "mail4@gmail.com"
        };

        if (UserExists(myCol, "mail2@gmail.com"))
        {
            Console.WriteLine("User 2 exists!");
        }
    }

    private static bool UserExists(IList myCol, string user)
    {
        return myCol.Contains(user);
    }
}

我查找了它,但是
属性.Settings
是从
全局::系统.Configuration.ApplicationSettingsBase
继承的类。
StringCollection
是此类上的一个字段。但是您应该能够通过调用该属性在代码端获得一个
StringCollection
对象。像
Properties.Settings.Default.User1
这应该会给你
StringCollection
对象。@A.pissica我已经根据你的问题编辑了我的答案我编辑了我的问题,我希望它更清楚。我想测试我的设置中的属性是否命名为“user”。@a.Pissicat Rushi Vyas发布了一个与您的说明相匹配的工作解决方案。
using System;
using System.Collections;
using System.Collections.Specialized;

public class SamplesStringCollection
{
    public static void Main()
    {
        // Creates and initializes a new StringCollection.
        StringCollection myCol = new StringCollection
        {
            "mail1@gmail.com",
            "mail2@gmail.com",
            "mail3@gmail.com",
            "mail4@gmail.com"
        };

        if (UserExists(myCol, "mail2@gmail.com"))
        {
            Console.WriteLine("User 2 exists!");
        }
    }

    private static bool UserExists(IList myCol, string user)
    {
        return myCol.Contains(user);
    }
}