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 に答える