简体   繁体   English

声明期间可以使用匿名类型成员吗?

[英]Possible to use anonymous type members during declaration?

Ok, so I'm trying to turn this: 好的,所以我试图将其转为:

sSelect = "SELECT CONVERT(VARCHAR, CommitDate, 101) AS XLabel, " +
    "SUM(CASE WHEN NOT CompletionDate IS NULL  THEN 1 ELSE 0 END) AS ClosedEvents, " +
    "COUNT(CommitDate) AS Total, " +
    "COUNT(CommitDate) - SUM(CASE WHEN NOT CompletionDate IS NULL THEN 1 ELSE 0 END) AS OpenEvents, " +
    "SUM(CASE WHEN CompletionDate IS NULL AND commitdate < Convert(varchar(12),getdate(),101) THEN 1    ELSE 0 END) AS BehindSchedule";

into a Linq query. 进入Linq查询。 So far I've got: 到目前为止,我已经:

var vEventsEntriesEnum = dtEventsEntries.AsEnumerable();

var vOpenEntriesData = from r in vEventsEntriesEnum
select new
{
    XLabel = r["CommitDate"],
    ClosedEvents = vEventsEntriesEnum.Sum(closed => (closed["CompletionDate"] != null) ? 1 : 0),
    Total = vEventsEntriesEnum.Count(total => (total["CommitDate"] != null) ? true : false),
    OpenEvents = Total - ClosedEvents,
};

which is where I realized I might have a problem. 这就是我意识到我可能有问题的地方。 Total and ClosedEvents do not exist in that context. 在该上下文中不存在Total和ClosedEvents。

While I can just go ahead and repeat the queries for ClosedEvents and Total and cast then subtract them or whatever, I was hoping there'd be a better way. 虽然我可以继续重复对ClosedEvents和Total的查询,然后进行强制转换然后减去它们之类的东西,但我希望有更好的方法。

If there are any other ways of doing what I'm doing with the rest of the code, feel free to let me know. 如果还有其他方法可以处理其余的代码,请随时告诉我。

Any ideas? 有任何想法吗?

You have to materialize it somewhere. 您必须在某个地方实现它。 In query syntax you can use the let clause : 在查询语法中,可以使用let子句

var vOpenEntriesData = from r in vEventsEntriesEnum
    let ClosedEvents = vEventsEntriesEnum.Sum(closed => (closed["CompletionDate"] != null) ? 1 : 0)
    select new
    {
        XLabel = r["CommitDate"],
        ClosedEvents,
        Total = vEventsEntriesEnum.Count(total => (total["CommitDate"] != null) ? true : false),
        OpenEvents = Total - ClosedEvents,
    };

This is similar to a variable in a loop. 这类似于循环中的变量。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM