我有一個使用 LINQ 對 List 進行分組的方法。我想用其他類輸出分組串列。投射型別的正確方法是什么?
方法:
public List<OutMyFileData> GetGroupedFiles(string path)
{
// List of all files in given path
List<MyFileData> allFiles = GetFiles(path);
return allFiles.OrderBy(file => file.Extension)
.GroupBy(file => file.Extension)
.Select(file => new
{
type = file.Key,
files = file.Select(ofile => new
{
ofile.Name,
ofile.LastMod,
ofile.Size
})
}).ToList() as List<OutMyFileData>;
}
和類:
public class MyFileData
{
public string Name { get; set; }
public string LastMod { get; set; }
public long Size { get; set; }
public string Extension { get; set; }
}
public class OutMyFileData
{
public string Name { get; set; }
public string LastMod { get; set; }
public long Size { get; set; }
}
uj5u.com熱心網友回復:
首先,您可能不會回傳匿名物件作為結果,因為無法為方法的回傳型別宣告該型別。
如果我理解正確,您可以嘗試撰寫一個類作為回傳 ViewModel MyFileViewModel,它可以包含您的回傳值。
public class MyFileViewModel{
public string Type { get; set; }
public IEnumerable<OutMyFileData> Files { get; set; }
}
public class OutMyFileData
{
public string Name { get; set; }
public string LastMod { get; set; }
public long Size { get; set; }
}
然后你可以呼叫如下
public List<MyFileViewModel> GetGroupedFiles(string path)
{
List<MyFileData> allFiles = GetFiles(path);
return allFiles.GroupBy(file => file.Extension)
.Select(file => new MyFileViewModel()
{
Type = file.Key,
Files = file.Select(ofile => new OutMyFileData()
{
Name = ofile.Name,
LastMod = ofile.LastMod,
Size = ofile.Size
})
}).ToList();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/452117.html
上一篇:重復零和數字的Python串列
下一篇:在R中創建一個包含表的串列
