Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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# linq查询中的字符串解析和使用匿名类型_C#_Linq_Anonymous Types_String Parsing - Fatal编程技术网

C# linq查询中的字符串解析和使用匿名类型

C# linq查询中的字符串解析和使用匿名类型,c#,linq,anonymous-types,string-parsing,C#,Linq,Anonymous Types,String Parsing,我有很多这样的东西: var obj4 = new Data { name = "person", date = DateTime.Now.AddDays(1), data = "pr-214-2-20151224-word2-word3" }; 我想写一个linq查询,结果如下: result=[name=person, date=04/09/2016 12:00:00 AM, data=[2,3]]//2 and 3 are the numbers after word 到目前为止,我

我有很多这样的东西:

 var obj4 = new Data { name = "person", date = DateTime.Now.AddDays(1), data = "pr-214-2-20151224-word2-word3" };
我想写一个linq查询,结果如下:

result=[name=person, date=04/09/2016 12:00:00 AM, data=[2,3]]//2 and 3 are the numbers after word
到目前为止,我试过:

   var listak=new List<Data>{obj,obj2,obj3,obj4};
    var u = listak.OrderByDescending(s => s.date).TakeWhile(s => s.date > DateTime.Now).Select(s=>new
    {
        name=s.name,
        date=s.date,
        data=s.data.Split(new []{"-"},StringSplitOptions.None).Select(m=>new
        {
            word = m.Where(c=>m.StartsWith("word")).Select(c=>m.Remove(0,4))//this line is incorrect, i dont know how to correct this part
        })

    });
var listak=新列表{obj,obj2,obj3,obj4};
var u=listak.OrderByDescending(s=>s.date).TakeWhile(s=>s.date>DateTime.Now).选择(s=>new
{
name=s.name,
日期=s.date,
data=s.data.Split(new[]{“-”},StringSplitOptions.None)。选择(m=>new
{
word=m.Where(c=>m.StartsWith(“word”))。选择(c=>m.Remove(0,4))//此行不正确,我不知道如何更正此部分
})
});
但是我不能得到我想要的,我怎样才能做到呢?

你可以试试这个:

   var obj4 = new { name = "person", date = DateTime.Now.AddDays(1), data = "pr-214-2-20151224-word2-word3" };
   var listak = new[] { obj4 }.ToList();
   var u = listak.OrderByDescending(s => s.date).TakeWhile(s => s.date > DateTime.Now).Select(s => new
   {
        name = s.name,
        date = s.date,
        data = s.data.Split(new[] { "-" }, StringSplitOptions.None).Where(c => c.StartsWith("word")).Select(m => m.Remove(0, 4))
    });

    Console.Write(u);

您的where子句需要移出以对字符串拆分的结果进行操作。您只需要以“word”开头的部分。@IanMercer是的,谢谢,就是这样:)