C# 第一条消息LINQ C的ID#
我对Linq表达式有问题。 我有一个像这样的txt数据 整数天,整数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$#$$$$$###$$$$$$$ .............
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$#$$$$$###$$$$$$$
.............
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数据的列表。