[c#]搜索字符串的所有属性

发布时间: 2017/2/25 10:48:51
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

有没有反正做更改"在哪儿",它会自动检查所有属性包含一个字符串,而不是手动添加每个属性名称吗?

 items.Where(m => m.Property1.IndexOf(word, StringComparison.CurrentCultureIgnoreCase) >= 0
                                || m.Property2.IndexOf(word, StringComparison.CurrentCultureIgnoreCase) >= 0
                                || m.Property3.IndexOf(word, StringComparison.CurrentCultureIgnoreCase) >= 0
                                || m.Property4?.IndexOf(word, StringComparison.CurrentCultureIgnoreCase) >= 0
                                || m.Property5?.IndexOf(word, StringComparison.CurrentCultureIgnoreCase) >= 0
                                || m.Property6.IndexOf(word, StringComparison.CurrentCultureIgnoreCase) >= 0
                                || m.Property7?.IndexOf(word, StringComparison.CurrentCultureIgnoreCase) >= 0
                                ));

谢谢你。

解决方法 1:

我会写一段代码使用反射...

public bool MyContains(object instance, string word)
{
        return instance.GetType()
                .GetProperties()
                .Where(x => x.PropertyType == typeof(string))
                .Select(x => (string)x.GetValue(instance, null))
                .Where(x => x != null)
                .Any(x => x.IndexOf(word, StringComparison.CurrentCultureIgnoreCase) >= 0);
}

然后将你的代码

items.Where(m=>MyContains(m,word));
赞助商