Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用字符串描述符筛选集合_C#_.net - Fatal编程技术网

C# 使用字符串描述符筛选集合

C# 使用字符串描述符筛选集合,c#,.net,C#,.net,假设我有具有某些属性的对象的列表: public class Class1 { public string s1 {get; set;} public string s2 {get; set;} public string s3 {get; set;} } 我想用一个字符串过滤这个列表,假设它的格式是: "s1=Hello,s3=Goodbye" (可能通过URL) 当然,我可以用通常的方式解析字符串,然后循环过滤项,通过反射比较属性名,等等 但我想知道是否有人知道已

假设我有具有某些属性的对象的
列表

public class Class1
{
    public string s1 {get; set;}
    public string s2 {get; set;}
    public string s3 {get; set;}
}
我想用一个字符串过滤这个
列表
,假设它的格式是:

"s1=Hello,s3=Goodbye"
(可能通过URL)

当然,我可以用通常的方式解析字符串,然后循环过滤项,通过反射比较属性名,等等


但我想知道是否有人知道已经有这样的库或类了?这一切都相当乏味,如果做得不好,可能会非常慢,特别是对于具有许多属性的类。这个问题听起来很普遍,我相信其他人以前也处理过,只是想知道是否有人知道任何优雅的解决方案

类似的内容(通过使用
Linq
和更具体地说
Where
子句):

var myList=new List{new Class1{s1=“你好”,s3=“再见”},new Class1{s1=“再见”,s3=“你好”};
var filteredList=myList.Where(i=>i.s1.Equals(“你好”)和&i.s3.Equals(“再见”).ToList();

filteredList
现在将只包含
myList

中的第一个元素,Dynamic link可以做这种事情非常感谢,Ben-这似乎取决于来自实现“IQueryable”的数据提供程序的列表。但是列表可能来自任何地方,例如web服务的序列化结果<代码>IEnumerable应该是唯一的限制,真的。它们不是没有get的属性。LINQ@AFischbein您可以通过调用
AsQueryable()
将任何
IEnumerable
转换为
IQueryable
,谢谢Ben-这非常有效!如果您不介意将其作为答案发布,我很乐意将其标记为正确。谢谢Sani。我应该澄清,解决方案应该能够处理任意属性和值,而不仅仅是我的示例中的属性和值。它应该解析字符串并应用其中包含的过滤器。谢谢
var myList = new List<Class1> { new Class1 { s1 = "Hello", s3 = "Goodbye" }, new Class1 { s1 = "Goodbye", s3 = "Hello" } };

var filteredList = myList.Where(i => i.s1.Equals("Hello") && i.s3.Equals("Goodbye")).ToList();