C# 我能';无法获取一般列表查询的结果
我正在将这些数据输入这个类的通用列表中C# 我能';无法获取一般列表查询的结果,c#,linq,generic-list,C#,Linq,Generic List,我正在将这些数据输入这个类的通用列表中 public class UTCTime { public DateTime UTCBas { get; set; } public DateTime UTCSon { get; set; } public TimeSpan Fark { get; set; } public char Sezon { get; set; } public UTCTime(string UTCStart , string UTCSt
public class UTCTime
{
public DateTime UTCBas { get; set; }
public DateTime UTCSon { get; set; }
public TimeSpan Fark { get; set; }
public char Sezon { get; set; }
public UTCTime(string UTCStart , string UTCStop , string Fark , char Sezon)
{
this.UTCBas = Convert.ToDateTime(UTCStart);
this.UTCBas = Convert.ToDateTime(UTCStop);
this.Fark = TimeSpan.Parse(Fark);
this.Sezon = Sezon;
}
public override string ToString()
{
return $"{this.UTCBas.ToString(@"yyy-MM-dd")} - {this.UTCBas.ToString(@"yyy-MM-dd")} - {this.Fark} - {this.Sezon}";
}
}
我想将LINQ查询的结果添加到将从此clas创建的通用列表中
public static void MTDoldur()
{
MarketTime.Add(new UTCTime("2000-04-01", "2000-10-28", "03:00", 'Y'));
MarketTime.Add(new UTCTime("2000-10-28", "2001-03-31", "02:00", 'K'));
MarketTime.Add(new UTCTime("2001-03-31", "2001-10-27", "03:00", 'Y'));
MarketTime.Add(new UTCTime("2001-10-27", "2002-04-06", "02:00", 'K'));
MarketTime.Add(new UTCTime("2002-04-06", "2002-10-26", "03:00", 'Y'));
MarketTime.Add(new UTCTime("2002-10-26", "2003-04-05", "02:00", 'K'));
MarketTime.Add(new UTCTime("2003-04-05", "2003-10-25", "03:00", 'Y'));
MarketTime.Add(new UTCTime("2003-10-25", "2004-04-03", "02:00", 'K'));
}
我在VAR数据类型中提取查询类型不会失败,但我无法在屏幕上打印数据并将其分配给变量。
我想将结果传输到泛型列表,并将数据从VAR数据类型导出到变量。
我想不出我的问题,我在等你的帮助
public class SonucTime
{
public TimeSpan Fark { get; set; }
public char Sezon { get; set; }
public SonucTime(TimeSpan Fark , char Sezon)
{
this.Fark = Fark;
this.Sezon = Sezon;
}
public override string ToString()
{
return $"Fark : {this.Fark} Sezon : {this.Sezon}";
}
}
static void Main(字符串[]args)
{
MTDoldur();
DateTime xT=新的DateTime();
xT=新的日期时间(2003,12,21);
var sonuc=(来自MarketTime中的m)
其中xT>=m.UTCBas&&xT您在UTCTime构造函数中出现“复制过去”错误-UTCSon未初始化
需要修复构造函数:
static void Main(string[] args)
{
MTDoldur();
DateTime xT = new DateTime();
xT = new DateTime(2003, 12, 21);
var sonuc = (from m in MarketTime
where xT >= m.UTCBas && xT <= m.UTCSon
select new { m.Fark, m.Sezon }).ToList();
}
public UTCTime(字符串UTCStart、字符串UTCStop、字符串Fark、字符Sezon)
{
this.UTCBas=Convert.ToDateTime(UTCStart);
this.UTCSon=Convert.ToDateTime(UTCStop);/=m.UTCBas&&xT您在UTCTime构造函数中出现“复制过去”错误-UTCSon未初始化
需要修复构造函数:
static void Main(string[] args)
{
MTDoldur();
DateTime xT = new DateTime();
xT = new DateTime(2003, 12, 21);
var sonuc = (from m in MarketTime
where xT >= m.UTCBas && xT <= m.UTCSon
select new { m.Fark, m.Sezon }).ToList();
}
public UTCTime(字符串UTCStart、字符串UTCStop、字符串Fark、字符Sezon)
{
this.UTCBas=Convert.ToDateTime(UTCStart);
this.UTCSon=Convert.ToDateTime(UTCStop);//=m.UTCBas&&xTnew{m.Fark,m.Sezon}
创建了一个匿名类型,我认为这不是您想要的。我想您应该创建一个SonucTime
的实例。这将是new SonucTime(m.Fark,m.Sezon)
。匿名类型类似于我们无法传递的临时类型,这就是为什么您无法将结果传递给另一个方法。如果您的查询选择了new SonucTime
,则结果是IEnumerable
,然后如果您添加ToList()
你得到了列表
@ScottHannen谢谢你的评论。你能给我举个例子吗?新建{m.Fark,m.Sezon}
创建了一个匿名类型,我认为这不是你想要的。我想你想要创建一个SonucTime
的实例。那就是新建SonucTime(m.Fark,m.Sezon)
。匿名类型类似于我们无法传递的临时类型,这就是为什么您无法将结果传递给另一个方法。如果您的查询选择了new SonucTime
,则结果是IEnumerable
,然后如果您添加ToList()
你得到了列表
@ScottHannen谢谢你的评论。你能给我举个例子吗?非常感谢你提供我的解决方案。直接使用它可以提供更好的性能?或者将结果发送到通用列表而不是VAR类型更有效。记录计数将产生数十亿次查询。非常感谢用于提供我的解决方案。直接使用它可以提供更好的性能?或者将结果发送到通用列表而不是VAR类型更有效。记录计数将产生数十亿次查询。
var sonuc = (from m in MarketTime
where xT >= m.UTCBas && xT <= m.UTCSon
select new SonucTime(m.Fark, m.Sezon))
.ToList();
/*
result:
sonuc
Count = 1
[0] [SonucTime]:{Fark : 02:00:00 Sezon : K}
Fark [TimeSpan]:{02:00:00}
Sezon [char]:75 'K'
*/