0

我需要使用 LINQ 将数据添加到视图模型我的视图模型是:

public class SearchScrapViewModel 
{ 
public WClass wClass{get; set;} 
public SClass sClass{get; set;} 
public YClass yClass { get; set; } 
} 

public class WClass 
{ 
public string title { get; set; } 
public string link { get; set; } 
} 
public class SClass 
{ 
public string title { get; set; } 
public string link { get; set; } 
} 
public class YClass 
{ 
public string title { get; set; } 
public string link { get; set; } 
}

我需要将这 3 个类与 3 个不同的 LINQ 查询一起使用,然后将数据传递给return View(SearchScrapViewModel);

var wikians = //LINQ Logic 
select new SearchScrapViewModel 
{ 
wClass.link = link.Attributes["href"].Value, //Error: I am not able to add to wClass 
wClass.title = link.InnerText 
}; 

和其他类类似

然后传递给,return View(SearchScrapViewModel);以便我可以访问此控制器视图中的所有 3 个类

怎么做?

4

3 回答 3

1

您忘记创建WClass 的实例:

select new SearchScrapViewModel {
    wClass = new WClass { 
        link = link.Attributes["href"].Value,
        title = link.InnerText 
    }
}; 

或者,您可以使 WClass(以及 SClass 和 YClass)成为结构而不是类,然后您不需要实例化它。但是,在这种情况下,您可能应该使结构不可变

于 2012-06-06T06:12:25.877 回答
0

LINQ 不是万能的,我不知道这是您正在寻找的最佳方法。我建议查看Builder Pattern来完成此操作。如果您真的想要,您可以在一个 LINQ 查询中执行此操作(使用对象初始化程序),但它可能不像构建器那样干净(但这是我的两分钱):

select new SearchScrapViewModel
{
    wClass = new wClass{title = xyz, link = xyz},
    sClass = new sClass...
    yClass = new yClass...
}
于 2012-06-06T06:12:14.200 回答
0

我不清楚为什么您需要在示例中使用 select 语句。在任何情况下,您都不能返回 SearchScrapViewModel 作为您的回报,因为那是一种类型而不是实例。除非您为这篇文章简化了代码并且您确实需要 linq,否则我建议:

var wikians = 
new SearchScrapViewModel {
    wClass = new WClass { 
        link = link.Attributes["href"].Value,
        title = link.InnerText 
    }
}; 

return View(wikians);
于 2012-06-06T19:46:11.967 回答