그래서 예 프로그램은 :식에 의존하는 LINQ 투영에서 반복되는 것을 피할 수있는 방법이 있습니까?
class Cat
{
public bool IsMale { get; set;}
public int TailLength { get; set; }
public string Name { get; set; }
public decimal ClawAttackFrequency { get; set; }
public List<DateTime> FeedingTimes { get; set; }
}
static void Main(string[] args)
{
var cats = new List<Cat>();
var someData = cats
.Select(x => new
{
x.Name,
x.IsMale,
LatestFeedingTime = x.FeedingTimes.Max(y => (DateTime?)y)
})
.Select(x => new
{
x.Name,
x.IsMale,
x.LatestFeedingTime,
WasFedRecently = x.LatestFeedingTime.HasValue && x.LatestFeedingTime.Value >= DateTime.Today.AddDays(-1)
});
}
이 아무것도하지 않는 단지 장난감 프로그램이지만 위해서 내가 대신 두 개의 예측을해야 LatestFeedingTime에 대한 표현을 복제하고 복제하는 것을 방지하는 것이 내 문제를 보여 많은 재산.
대안이 있었을 것이다 :
var someData = cats
.Select(x => new
{
x.Name,
x.IsMale,
LatestFeedingTime = x.FeedingTimes.Max(y => (DateTime?)y),
WasFedRecently = (x.FeedingTimes.Max(y => (DateTime?)y)).HasValue && (x.FeedingTimes.Max(y => (DateTime?)y)).Value >= DateTime.Today.AddDays(-1)
});
그러나이 대신 까다로운 표현을 복제합니다.
C#에서 두 세계의 장점을 최대한 활용할 수있는 방법이 있습니까? 표현을 선언하고 동일한 프로젝션에서 두 번 사용하는 것과 같은 방법?
필자가 예를 지나치게 단순화 한 몇 가지 대답을 본 후에 알 수 있습니다. 진짜 문제는 linq가 entite에 더 관련이 있습니다. 나는 누군가가 실제로 이것을 궁금해하고 아마도 더 좋은 질문을 올릴 경우를 대비하여 대답 중 하나를 받아 들일 것이다. – alun