C# 第一条消息LINQ C的ID#

C# 第一条消息LINQ C的ID#,c#,linq,lambda,C#,Linq,Lambda,我对Linq表达式有问题。 我有一个像这样的txt数据 整数天,整数ID,字符串消息 1 13 #abor# #e#tun###agy#szel#2# #o##h#d#g ##rkasn#o#oka# #a#tunk e####a#akn##$#$#$##$$$$$$#### 1 19 ta###t##ertunk ##gy #zel#####ok hide##f#r##sn#omo#at ##ttu## e#y patak#al$#$$$$$###$$$$$$$ .............

我对Linq表达式有问题。 我有一个像这样的txt数据

整数天,整数ID,字符串消息

1 13
#abor# #e#tun###agy#szel#2# #o##h#d#g ##rkasn#o#oka# #a#tunk e####a#akn##$#$#$##$$$$$$####
1 19
ta###t##ertunk ##gy #zel#####ok hide##f#r##sn#omo#at ##ttu## e#y patak#al$#$$$$$###$$$$$$$
.............
我想得到第一条信息的ID。 我试着这样做:

public static void task2()
{
           IEnumerable<Expadatok> firstmessid = Expadat.First(x => x.message).ID;
           Expadatok firstmessid = Expadat.First(x => x.message).ID;

           Console.WriteLine($"The ID of the first massage was {firstmessid}");
}
publicstaticvoidtask2()
{
IEnumerable firstmessid=Expadat.First(x=>x.message).ID;
Expadatok firstmessid=Expadat.First(x=>x.message).ID;
WriteLine($“第一次按摩的ID是{firstmessid}”);
}
但没有一个成功。
数据读取成功,我做错了什么?

没有关于Expadat、Expadatok。。。还有第一个(x=>x.message)可能意味着什么(message是一个字符串,否?在应该有布尔表达式的上下文中使用)

这很好:

void Main()
{
    var plain = s.Split(new char[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries);
    var data = plain
        .Where((p, i) => i % 2 == 0)
        .Select(p => p.Split())
        .Select(p => new {Day=p[0], ID=p[1]})
        .Zip(plain.Where((p, i) => i % 2 == 1), (f, s) => new {Day = f.Day, ID=f.ID,Message=s});
    
    Console.WriteLine(data.First(x => x.Message).Message);
}

string s = @"1 13
#abor# #e#tun###agy#szel#2# #o##h#d#g ##rkasn#o#oka# #a#tunk e####a#akn##$#$#$##$$$$$$####
1 19
ta###t##ertunk ##gy #zel#####ok hide##f#r##sn#omo#at ##ttu## e#y patak#al$#$$$$$###$$$$$$$";
Expadat.First(x=>x.message)
的意思不是“从Expadat获取第一条消息”,而是“从Expadat获取第一条消息,其中消息属性为“true”。由于
消息
的类型为
字符串
,这是一个编译器错误(“无法将类型“string”隐式转换为“bool”)

你可能想要的是

Expadat.First().ID 
含义:从Expadat获取第一项,然后使用其ID属性


请注意,如果Expadat为空,
.First()
将失败。您可以使用
.FirstOrDefault()
,但当列表为空时,将返回一个
null
,当您尝试访问其ID属性时,将导致NullReferenceException。

和Expadat.First().ID?请添加有关这些消息如何在
Expadat
中结束以及
Expadat
外观的信息。还有,“他们都不工作”是什么意思?例外情况?如果是,则显示异常消息。它是一个列表
private static list Expadat=new list()
它表示无法隐式地将x.message的类型“string”转换为“bool”,这意味着您永远不会得到任何输出,因为
Expadat
为空。如何将文本转换为
Expadatok
?它不是空的,我创建了一个构造函数,并通过一个方法上传了包含txt数据的列表。