我有以下课程:
public class Menu
{
public int Order { get; set; }
public string Title { get; set; }
public string Status { get; set; }
public string Type { get; set; }
public bool Default { get; set; }
public string Link { get; set; }
public string Notes { get; set; }
public string Text { get; set; }
}
public class MenuItem
{
public int Order { get; set; }
public string Title { get; set; }
public string Type { get; set; }
public bool Default { get; set; }
public string Link { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这也是返回ICollection的
var menu = _menuRepository.GetPk(pk);
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我如何使用LINQ:
a) Get the data from menu
b) Select only rows where Status = "00"
c) Order by Order
d) Put the data into the MenuItem class
Run Code Online (Sandbox Code Playgroud)
我听说有两种编码方式.任何人都可以解释这些并建议哪个更好.
Jimmy的回答看起来对我来说 - 这是查询表达式中的等价形式:
var query = from m in _menuRepoistory.GetPk(pk)
where m.Status == ""
order by m.Order
select new MenuItem
{
Order = m.Order, Title = m.Title, Type = m.Type,
Default = m.Default, Link = m.Link
};
Run Code Online (Sandbox Code Playgroud)
您可能需要考虑添加一个带有MenuItem
a Menu
或ToMenuItem
方法的构造函数Menu
,以便您可以使用:
var query = from m in _menuRepoistory.GetPk(pk)
where m.Status == ""
order by m.Order
select m.ToMenuItem();
Run Code Online (Sandbox Code Playgroud)
(与吉米的回答一样,你可以打电话ToList
来实现结果List<T>
.)
试试这个:
var menuItems = _menuRepository.GetPk(pk)
.Where(m => m.Status == "00")
.OrderBy(m => m.Order)
.Select(m => new MenuItem
{
Order = m.Order,
Title = m.Title,
Type = m.Type,
Default = m.Default,
Link = m.Link
});
Run Code Online (Sandbox Code Playgroud)
您可以.ToList()
立即投掷到物化集合.