作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 Vehicle
类型:
public class Vehicle : EntityObject
{
private Lazy<string> _nameFromDelegate = null;
private Lazy<IList<Component>> _components = null;
public Vehicle(int id, string name, Lazy<string> nameFromDelegate, Lazy<IList<Component>> components)
: base(id)
{
this.Name = name;
this._nameFromDelegate = nameFromDelegate;
}
public string Name { get; private set; }
public string NameFromDelegate
{
get
{
return this._nameFromDelegate.Value;
}
}
public IList<Component> Components
{
get
{
return this._components.Value;
}
}
}
Vehicle
上的两个属性上。类型:“名称”
string
属性和“NameFromDelegate”
string
属性(封装了
Lazy<string>
)。
string
对 L2S 没有任何影响ctor 参数或发送到
Lazy<string>
ctor 参数。但也许确实如此:
string
转换至
Func<string>
.想法?
at System.Convert.DefaultToType(IConvertible value, Type targetType, IFormatProvider provider)
at System.String.System.IConvertible.ToType(Type type, IFormatProvider provider)
at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider)
at System.Data.Linq.DBConvert.ChangeType(Object value, Type type)
at Read_Vehicle(ObjectMaterializer`1 )
at System.Data.Linq.SqlClient.ObjectReaderCompiler.ObjectReader`2.MoveNext()
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at DelegateQueries.Models.VehicleRepoWithDelegates.GetAll() in %path%\DelegateQueries\Models\VehicleRepoWithDelegates.cs:line 26
at DelegateQueries.Tests.RepoTests.VehicleRepo_CanReturn_NameFromDelegateProp_InLinq_WithDelegate() in %path%\DelegateQueries\DelegateQueries.Tests\RepoTests.cs:line 31
最佳答案
这似乎可以解决问题:
static Lazy<T> Lazyfy<T>(T input)
{
return new Lazy<T>(() => input);
}
public IQueryable<Vehicle> Vehicles()
{
return from veh in ctx.vehicles
select new Vehicle(veh.id, veh.name, Lazyfy(veh.name), null);
}
static Func<T> Functify<T>(T input)
{
return () => input;
}
public IQueryable<Vehicle> Vehicles()
{
return from veh in ctx.vehicles
select new Vehicle(veh.id, veh.name, new Lazy<string>(Functify(veh.name)), null);
}
var r = from veh in ctx.vehicles
select new Func<int>(() => veh.id);
r.ToList();
关于linq-to-sql - 如何将 Lazy<T> 传递到我的投影中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5470113/
我是一名优秀的程序员,十分优秀!