C# C:具有拆分和解析的LINQ查询

C# C:具有拆分和解析的LINQ查询,c#,linq,split,C#,Linq,Split,我有一个带有字符串字段的对象,其中包含一个逗号分隔的整数列表。我正在尝试使用LINQ检索列表中具有特定编号的 这是我的方法 from p in source where (p.Keywords.Split(',').something.Contains(val)) select p; 其中p.关键字是要拆分的字段 我在网上看到了以下内容,但没有编译: from p in source where (p.Keywords.Split(',').Select(x=>x.Trim()).

我有一个带有字符串字段的对象,其中包含一个逗号分隔的整数列表。我正在尝试使用LINQ检索列表中具有特定编号的

这是我的方法

from p in source 
where (p.Keywords.Split(',').something.Contains(val)) 
select p;
其中p.关键字是要拆分的字段

我在网上看到了以下内容,但没有编译:

from p in source 
where (p.Keywords.Split(',').Select(x=>x.Trim()).Contains(val)) 
select p;
我是LINQ的新手,但在简单的查询方面取得了成功

更新: 看起来我遗漏了一些细节:

source是一个列表,包含具有字段关键字的对象,字段关键字带有字符串,如1,2,4,7 我得到的错误是关于x没有被定义。
以下是选择大于3的数字的示例:

string str = "1,2,3,4,5,6,7,8";
var numbers = str.Split(',').Select(int.Parse).Where(num => num > 3); // 4,5,6,7,8
如果有列表,则更改Where子句:

如果您不是在查找数字,而是在查找字符串,则:

string str = "1,2,3,4,5,6,7,8";
List<string> relevantNumsStr = new List<string>{"5","6","7"};
var numbers = str.Split(',').Where(numStr => relevantNumsStr.Contains(numStr)); // 5,6,7

下面是一个如何实现这一目标的示例。为了简单起见,我没有串上要检查的数字,但你明白了

    // class to mimic what you structure
    public class MyObj
    {
        public string MyStr{get;set;}
    }

    //method
    void Method()
    {
            var myObj  = new List <MyObj>
            { 
                new  MyObj{ MyStr="1,2,3,4,5"},
                new  MyObj{ MyStr="9,2,3,4,5"}
            };
            var num =9;
            var searchResults = from obj  in myObj
                                where !string.IsNullOrEmpty(obj.MyStr) &&  
                                    obj.MyStr.Split(new []{','})
                                        .Contains(num.ToString())
                                select obj;
            foreach(var item in searchResults)                           
            Console.WriteLine(item.MyStr);                           
    }

感谢所有的答案,尽管不是用正确的语言,但他们让我找到了答案:

from p in source where (p.Keywords.Split(',').Contains(val.ToString())) select p;

其中val是我要查找的数字。

编译错误是什么?源是什么?您得到的错误是什么?如果源代码是List/IEnumerable,而类包含字符串类型的属性关键字,则第二个代码段应该可以编译。必须将三个不同的答案打包在一个中是一个明显的迹象问题不是不够清楚,或者太宽泛,一开始无法可靠回答。@FrédéricHamidi-我必须同意您的意见:我使用的是.cs文件,但尝试了您的第一个选项,出现以下错误:错误CS0119:表达式表示类型',其中变量',值“或方法组”是预期的。我问题的第二句话是:我正在尝试使用LINQ检索列表中具有特定编号的。虽然不是我结束时使用的确切代码,但它包含并解释了很多关于如何修复的内容。这看起来像是脚本,我使用C,但请引导我找到答案。谢谢无法处理.cs文件。我也在从Java世界学习C,有些结构我可能不知道。
from p in source where (p.Keywords.Split(',').Contains(val.ToString())) select p;