c# - c#/xml String.Contains 使用自定义类时无法正确返回字符串
问题描述
我正在尝试创建一个函数,通过搜索基本字符串,我可以在数组中找到自定义类的实例。但是,String.Contains 似乎没有在数组中的任何位置找到该字符串。
该数组由一个单独的类设置,该类将多个 Provider 类存储在一个 XML 文件中。
<ContentProviders>
<Providers>
<Provider>
<Name>Roblox (Epicgamers Redirect)</Name>
<URL>http://epicgamers.xyz/asset/?id=</URL>
<Icon>roblox.png</Icon>
</Provider>
<Provider>
<Name>Roblox (Epicgamers Redirect Shortened)</Name>
<URL>http://epiccc.xyz/asset/?id=</URL>
<Icon>roblox.png</Icon>
</Provider>
<Provider>
<Name>Finobe</Name>
<URL>http://finobe.com/asset/?id=</URL>
<Icon>finobe.png</Icon>
</Provider>
<Provider>
<Name>Imgur</Name>
<URL>http://i.imgur.com/</URL>
<Icon>imgur.png</Icon>
</Provider>
</Providers>
</ContentProviders>
数组加载正常,但是 String.Contains 似乎不匹配查询与 URL,即使它存在。如果我使用“http://i.imgur.com/TRGsjgo.png”之类的 URL,它将在字符串中找不到基本 URL“http://i.imgur.com/”。
有没有什么办法解决这一问题?
代码:
#region Content Provider Options
public class Provider
{
public string Name;
public string URL;
public string Icon;
}
[XmlRoot("ContentProviders")]
public class ContentProviders
{
[XmlArray("Providers")]
public Provider[] Providers;
}
public class OnlineClothing
{
public static Provider[] GetContentProviders(string filename)
{
XmlSerializer serializer = new XmlSerializer(typeof(ContentProviders));
FileStream fs = new FileStream(filename, FileMode.Open);
ContentProviders providers;
providers = (ContentProviders)serializer.Deserialize(fs);
return providers.Providers;
}
public static Provider FindContentProviderByName(Provider[] providers, string query)
{
return providers.SingleOrDefault(item => item.Name.Contains(query));
}
public static Provider FindContentProviderByURL(Provider[] providers, string query)
{
return providers.SingleOrDefault(item => item.URL.Contains(query));
}
public static string GetURLForProvider(Provider provider)
{
return provider.URL;
}
public static string GetNameForProvider(Provider provider)
{
return provider.Name;
}
public static string GetIconNameForProvider(Provider provider)
{
return provider.Icon;
}
}
#endregion
解决方案
我是在阅读 Jon Skeet 的评论时才发现的。我编码错了!
我需要查看查询是否包含提供程序 URL,而不是是否包含查询。
public static Provider FindContentProviderByName(Provider[] providers, string query)
{
return providers.SingleOrDefault(item => query.Contains(item.Name));
}
public static Provider FindContentProviderByURL(Provider[] providers, string query)
{
return providers.SingleOrDefault(item => query.Contains(item.URL));
}
推荐阅读
- ios - 在 Swift 4.2 中观察不会被触发
- sql - 带有 Where 子句的 SQL Left Join 查询从第一个表中删除一些行
- c - struct内存分配,内存分配应该是4的倍数
- python - 气流网络服务器未从 1.10 开始
- delphi - 使用 TTHread 同时打开更多 ClientDataSet
- button - 如何控制对由 SharePoint 安全组控制的 InfoPath 表单按钮的访问
- c# - 从存储过程中读取标量值数据并在 MVC 视图中显示
- reactjs - React Router +后退按钮正在重置我的应用程序状态
- java - 请求参数为空的路径的 RequestMapping
- parallel-processing - JdbcIO.read() - 查询分区