C# 如何在asp.net mvc中使用字符串变量作为列名

C# 如何在asp.net mvc中使用字符串变量作为列名,c#,asp.net,asp.net-mvc,entity-framework,variables,C#,Asp.net,Asp.net Mvc,Entity Framework,Variables,我不确定这样的事情是否可能发生。但是我想使用一个变量作为列名 下面是我必须使用的代码 cartall.CartItems = cartdatas.Select(a => new Models.DTO.CartDTO.CartVM() { VariationId = a.VariationId, ColorName = a.ColorName, StockInfo = rpstock.FirstOrDefault(x => x.Id == a.Variation

我不确定这样的事情是否可能发生。但是我想使用一个变量作为列名

下面是我必须使用的代码

cartall.CartItems = cartdatas.Select(a => new Models.DTO.CartDTO.CartVM()
{
    VariationId = a.VariationId,
    ColorName = a.ColorName,
    StockInfo = rpstock.FirstOrDefault(x => x.Id == a.VariationId).Yellow
}).ToList();
但我想像下面那样使用它

我要使用的代码:

cartall.CartItems = cartdatas.Select(a => new Models.DTO.CartDTO.CartVM()
{
    VariationId = a.VariationId,
    ColorName = a.ColorName,
    StockInfo = rpstock.FirstOrDefault(x => x.Id == a.VariationId).(a.ColorName)
}).ToList();
我的股票

public class Stock:Base.BaseEntity
{
    public int Id { get; set; }
    public int? Yellow { get; set; }
    public int? Red { get; set; }
    public int? White { get; set; }

    public virtual VariationEntity.Variation Variation { get; set; }
}
我的变异

public class Variation : Base.BaseEntity
{
    public int Id { get; set; }
    public int OwnerProductID { get; set; }
    public string SKU { get; set; }
    public short? Height { get; set; }
    public short? Width { get; set; }
    public decimal? Price { get; set; }
    public string Delivery { get; set; }
    public int? OrderLimit { get; set; }

    public virtual StockEntity.Stock Stock { get; set; }
}
我在stock.cs和variation.cs之间有一对一的关系。cs

这应该有效:

public class Variation : Base.BaseEntity
{
    public int Id { get; set; }
    public int OwnerProductID { get; set; }
    public string SKU { get; set; }
    public short? Height { get; set; }
    public short? Width { get; set; }
    public decimal? Price { get; set; }
    public string Delivery { get; set; }
    public int? OrderLimit { get; set; }

    public virtual StockEntity.Stock Stock { get; set; }
}
 StockInfo = rpstock.FirstOrDefault(x => x.Id == a.VariationId && x.ColorName == a.ColorName)

我创建了一个
方法
,它将获取一个
列表
和一个
列名
,然后返回该列的
。请检查这个

代码:


您可以在中运行此解决方案。

这将不起作用。因为“ColorName”不是一列。我将颜色定义为列。然后我想我需要更多的代码来查看您的数据类型是如何布局的。随着您的更新,很明显,您想要的是内联的。在
cartdata周围需要一个黄色、红色和白色的
开关
-语句。选择
-语句并为每种颜色复制代码。这是因为您的代码内部不知道黄色、红色和白色。就代码而言,它们只是成员名称。谢谢Bob,我决定更改stock表的结构。这将是困难的,但从长远来看更有用。我将创建一个颜色表,在库存表中将有颜色名称、数量列。这样我就可以很容易地访问每件事,这将是更通用的。很高兴你自己发现了设计问题。嗯,你错过了标记
实体框架
。您的代码对linq to对象运行良好,但对linq to实体运行不好。谢谢您的回答。它工作得很好,但我会改变表的结构,它会更有用。
cartall.CartItems = cartdatas.Select(a => new Models.DTO.CartDTO.CartVM()
{
    VariationId = a.VariationId,
    ColorName = a.ColorName,
    StockInfo = GetColumnValue(rpstock.FirstOrDefault(x => x.Id == a.VariationId).ToList(), a.ColorName)
}).ToList();