gpt4 book ai didi

c# - 是否可以从这 2 个 linq 语句中创建 1 个通用方法?

转载 作者:太空狗 更新时间:2023-10-29 22:32:59 25 4
gpt4 key购买 nike

我有 2 个 linq 语句 - 目前在一个 switch block 的中间。声明如下。

pwStartTime = lender.ApplicationWindows
.Where(w => w.Name == pwPeriod && w.EndTime.TimeOfDay > dateToCheck.TimeOfDay)
.Select(w => w.StartTime)
.FirstOrDefault();


pwStartTime = lender.TransferWindows
.Where(w => w.Name == pwPeriod && w.EndTime.TimeOfDay > dateToCheck.TimeOfDay)
.Select(w => w.StartTime)
.FirstOrDefault();

如您所见,唯一的区别是它们引用了“lender”的两个不同属性,然而,“ApplicationWindows”和“TransferWindows”中 linq 查询中使用的所有元素都是相同的,尽管它们并不相同对象,每个对象都包含其他独特的属性。

那么,是否可以通过一种通用方法返回 w.StartDate?

提前致谢。

//这是两个类

public class ApplicationWindow
{
public string Name { get; set; }
public DateTime StartTime { get; set; }
public DateTime EndTime { get; set; }
}

public class TransferWindow
{
public string Name { get; set; }

public DateTime StartTime { get; set; }

public DateTime EndTime { get; set; }

[XmlIgnore]
public TimeSpan Cycle { get; set; }

[Browsable(false)]
[XmlElement("Cycle")]
public string CycleString
{
get { return XmlConvert.ToString(Cycle); }
set { Cycle = value.IsNullOrEmpty() ? TimeSpan.Zero : XmlConvert.ToTimeSpan(value); }
}
}

最佳答案

如果 ApplicationWindows 和 TransferWindows 实现了一个公共(public)接口(interface),那么您可以执行以下操作;

public DateTime GetStartTime(IEnumerable<IWindow> windows, string pwPeriod, TimeSpan timeOfDay)
{
return windows.Where(w => w.Name == pwPeriod && w.EndTime.TimeOfDay > timeOfDay)
.Select(w => w.StartTime)
.FirstOrDefault();
}

更新

如果您使用的是 LINQ To SQL,那么您可以通过创建一个与这两个 Window 类同名(并且在同一命名空间中)的分部类来让它们实现一个接口(interface),并表示这实现了该接口(interface)。

我相信这应该行得通,虽然我已经有一段时间没有这样做了,但我是用 VB.NET 做的。

关于c# - 是否可以从这 2 个 linq 语句中创建 1 个通用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16077150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com