1

如果我还有一个可用的参数也将在 where 子句中使用,我需要使用 Lambda 添加连接。

我的问题是我不确定添加新对象 MemberTagLysts 的确切格式,以及应该如何创建 where 子句。

    var tagList =   from t in dc.Tags
    join b in dc.Businesses on t.BusinessId equals b.BusinessId
            where t.IsActive == true
            where b.IsActive == true
            orderby t.AdImage descending
            select new TagItem
            {
                    tagName = t.Name.Replace("\"", ""),
                    tagImage = tagImagePath + t.AdImage.Replace("\"", ""),
                    tagDescription = t.Description.Replace("\"", "")
            };

            if (!string.IsNullOrEmpty(lystId))
            {
                            tagList = (IQueryable<TagItem>)tagList.GroupJoin(dc.MemberTagLysts, a => a.tagId, b => b.TagId, (a, b) => new { a, b });
            }
4

1 回答 1

1

我想你想做这样的事情:

var tagList =   from t in dc.Tags
    join b in dc.Businesses on t.BusinessId equals b.BusinessId
    where t.IsActive
    where b.IsActive
    orderby t.AdImage descending
    select new TagItem
    {
            tagName = t.Name.Replace("\"", ""),
            tagImage = tagImagePath + t.AdImage.Replace("\"", ""),
            tagDescription = t.Description.Replace("\"", "")
    };

if (!string.IsNullOrEmpty(lystId))
{
    tagList = tagList
             .GroupJoin(dc.MemberTagLysts.Where(l => l.lystId == lystId),
                        a => a.tagId,
                        b => b.TagId,
                        (a, b) => new { a, b }));
}

有条件地扩展查询是一种很好的做法。请注意,像这样的条件where t.IsActive == true是多余的,where t.IsActive使用精心选择的属性名称(正如您所拥有的那样)就足够且可争论更好地阅读。

于 2013-01-14T19:05:50.380 回答