首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linq-To-SQL Marc Gravell的InRange扩展

Linq-To-SQL Marc Gravell的InRange扩展
EN

Stack Overflow用户
提问于 2012-01-23 20:40:10
回答 1查看 656关注 0票数 2

我试着使用Marc Gravell在这里写的InRange扩展:

LINQ Expression to return Property value?

这是我到目前为止的代码:

代码语言:javascript
复制
// Fetch list of visit Ids and distinct Ips that fall into the date range
var q = (from c in db.tblTrackerVisits where c.Date >= MinDate select new { c.ID, c.IPID });
List<int> VisitIDs = q.Select(c => c.ID).ToList();
List<int> DistinctIPs = q.Select(c => c.IPID).Distinct().ToList();

// List of all campaigns that have visitors
var Campaigns = db.tblTrackerVariables
    .Where(c => 
        c.TypeID == Settings.CampaignTrackerVariableTypeID
        //&& db.tblTrackerVisitVariables.Any(d=>VisitIDs.Contains(d.VisitID) && d.VariableID == c.ID)
        && db.tblTrackerVisitVariables.InRange(x => x.VisitID, 1500, VisitIDs)
    )
    .Select(c => new { c.ID, c.Name }).OrderBy(c=>c.Name);

然而,这抛出了:

代码语言:javascript
复制
Cannot implicitly convert type 'System.Collections.Generic.IEnumerable<tblTrackerVisitVariable>' to 'bool'

我不确定我是否正确地使用了它,有人能给我一些指点吗?上面的注释掉了:

代码语言:javascript
复制
//&& db.tblTrackerVisitVariables.Any(d=>VisitIDs.Contains(d.VisitID) && d.VariableID == c.ID)

是旧的工作代码(但是它抛出了参数太多的错误,所以我不得不求助于这个扩展方法)。

EN

回答 1

Stack Overflow用户

发布于 2012-01-23 20:47:15

Mark的扩展方法返回IEnumerable,而不是bool,因此不能包含在逻辑表达式中。如果您想检查结果是否是非空的,请尝试Any方法:

代码语言:javascript
复制
db.tblTrackerVisitVariables.InRange(x => x.VisitID, 1500, VisitIDs).Any()
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8971765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档