LINQ var 类型转换为 List
LINQ var type cast to List
我有一个使用 LINQ 对给定列表进行分组的方法。我想输出与其他 class 的分组列表。正确的打字方法是什么?
方法:
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>;
}
和class是:
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; }
}
首先,您可能不会 return 匿名对象作为结果,因为无法为 return 类型的方法声明该类型。
如果我理解正确,你可以尝试写一个 class 作为 return ViewModel MyFileViewModel
,它可以包含你的 return 值。
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();
}
我有一个使用 LINQ 对给定列表进行分组的方法。我想输出与其他 class 的分组列表。正确的打字方法是什么?
方法:
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>;
}
和class是:
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; }
}
首先,您可能不会 return 匿名对象作为结果,因为无法为 return 类型的方法声明该类型。
如果我理解正确,你可以尝试写一个 class 作为 return ViewModel MyFileViewModel
,它可以包含你的 return 值。
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();
}