我有一个称为Asset的表。它有很多列。我只想选择其中两个并分别使用。这两个列都是字符串。
Linq查询:
public static List<string> GetAssetIdsWithNames()
{
using (var db = DbManager.Get())
{
var result = db.Assets.SelectMany(i=> new[] { i.AssetName, i.AssetId }).Distinct().ToList();
return result;
}
}
我想在哪里使用它们:
var assetList = AssetManager.GetAssetIdsWithNames();
//CURRENCYBOX IS A DROPDOWN
CurrencyBox.DataSource = assetList;
CurrencyBox.DataBind();
foreach (var item in assetList)
{
CurrencyBox.DataValueField = //asset id goes here
CurrencyBox.DataTextField =//asset name goes here
break;
}
您不能在本地范围之外访问匿名类型。
匿名类型只能Object
在其本地范围之外返回,并且它们的属性必须通过反射进行检查。
因此,在这种情况下,最好使用类型化的数据协定并从Asset实体映射,然后从调用方法访问它。
您对的使用SelectMany
似乎也很奇怪,您可能正在追求Select
。
public class AssetDto
{
public string Name { get;set; }
public string Id { get; set; }
}
public static List<AssetDto> GetAssetIdsWithNames()
{
using (var db = DbManager.Get())
{
var result = db.Assets.Select(i=> new AssetDto { Name = i.AssetName, Id = i.AssetId }).ToList();
return result;
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句