[英]How do I use linq to get the difference of a List<byte[]> and an anonymous type with a byte[] property?
[英]How to get a List<anonymous type> generated by Linq outside of an using statement?
使用 using 语句进行查询,这意味着一旦它结束,创建的 object 就会被释放。
using (Context context = new())
{
var records = context.PoRecords
.Join(
context.PoStatuses,
record => record.PoStatus,
status => status.Id,
(record, status) => new
{
record.PoNumber,
record.PrNumber,
Status = status.Name,
}
).ToList();
}
我怎样才能在使用之外获得该列表? 我认为我要做的是为该查询创建一个自定义 class ,在 using 之外声明该类型的列表并用查询的内容填充它,当我查询整个表时我已经这样做了,但是,因为这是加入表我不能只声明List<CustomType> records =...querywithjoins...
因为 Linq 返回的列表是匿名类型。 我必须在使用之外这样做,有点像这样:
List<CustomType> records;
using (Context context = new()){
records = TheWholeQuery.ToList();
}
我想到的另一种方法是,因为我在带有 foreach 的列表视图中列出查询结果,创建自定义类型的新对象并将它们添加到新列表中,但是,这意味着我必须遍历我所做的每一个查询,我不打算每次都这样做。
有没有办法做到这一点? 还是解决办法??
如果您不想定义 class,则可以使用元组,尽管我发现在这些情况下通常更容易定义 class。
List<Tuple<int, int, string>> records = null;
using (Context context = new())
{
records = context.PoRecords
.Join(
context.PoStatuses,
record => record.PoStatus,
status => status.Id,
(record, status) => new Tuple<int, int, string>(
record.PoNumber,
record.PrNumber,
status.Name
)
).ToList();
}
如果您不想删除 using 语句,您可以将匿名类型的列表转换为“CustomType”列表
所以..
List<CustomType> records;
using (Context context = new())
{
records = context.PoRecords
.Join(
context.PoStatuses,
record => record.PoStatus,
status => status.Id,
(record, status) => new CustomType()
{
PoNumber = record.PoNumber,
PrNumber = record.PrNumber,
Status = status.Name,
}
).ToList();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.