我有以下Linq Expression
var tooDeep = shoppers
.Where(x => x.Cart.CartSuppliers.First().Name == "Supplier1")
.ToList();
我需要将名称部分转换为以下字符串。
x.Cart.CartSuppliers.Name
作为其中的一部分,我将表达式转换为字符串然后拆分。并删除了First()参数。但是,当我到CartReppliers时,它返回一个Suppliers []数组。有没有办法从中获得单一类型。例如。我需要找回供应商。
更新:开始工作
var fullName = m.ToString().Split(new[] { '.' }, StringSplitOptions.RemoveEmptyEntries);
// this supports the "deep graph" name - "Product.Address.City"
var fixedName = fullName.Skip(1).Take(fullName.Length - 1)
.Where(x => x != "First()")
.Select(x => System.Text.RegularExpressions.Regex.Replace(x, @"\[[0-9]+\]",""))
.ToArray();
用这个:
var prop = property.PropertyType.HasElementType ? property.PropertyType.GetElementType() property.PropertyType;
启用了从数组中查找单个类型。
由于
答案 0 :(得分:1)
firstSupplierWithNeededName = shoppers
.SelectMany(s => s.Cart.CartSuppliers)
.First(s => s.Name == "Supplier1");
但是如果必须只返回一个,还要考虑使用FirstOrDefault或Single。