我有2个表格模型,
第一张桌子:
public class tbl_mpDets
{
[Key]
public int mpd_Id { get; set; }
public int mp_Id { get; set; }
public int dpBrand { get; set; }
public int tKrila { get; set; }
public int tPrecka { get; set; }
public decimal? dpKol { get; set; }
[DisplayFormat(DataFormatString = "{0:N0}", ApplyFormatInEditMode = true)]
public decimal dpShirina { get; set; }
public decimal dpVisina { get; set; }
public string dpLorR { get; set; }
[ForeignKey("dpBrand")]
public virtual tbl_mehBrand tbl_mehBrand { get; set; }
[ForeignKey("mp_Id")]
public virtual tbl_mpMas tbl_mpMas { get; set; }
public virtual tbl_mehTip tbl_mehTip { get; set; }
public string tip1 { get; set; }
public tbl_mpDets(tbl_mehTip objtbl_mehTip) =>
tip1 = (tbl_mehTip.sirOd <= dpShirina && tbl_mehTip.sirDo >= dpShirina) ? tbl_mehTip.tCode.ToString() : -1; // -1 is a default value
}
第二张表:
public class tbl_mehTip
{
public tbl_mehTip() => tbl_mpDets = new HashSet<tbl_mpDets>();
[Key]
public int tip_Id { get; set; }
public int sektor { get; set; }
public int tBrand { get; set; }
public string tName { get; set; }
public string tCode { get; set; }
public decimal sirOd { get; set; }
public decimal sirDo { get; set; }
public decimal visOd { get; set; }
public decimal visDo { get; set; }
public decimal tCena { get; set; }
[ForeignKey("tBrand")]
public virtual tbl_mehBrand tbl_mehBrand { get; set; }
[ForeignKey("tBrand")]
public virtual ICollection<tbl_mpDets> tbl_mpDets { get; set; }
}
现在,在First Model中,我需要通过检查扩展名为.Where
的参数来获取Value,然后从Second中选择正确的值。
示例:
// I need some code like this if is possible!
public string Nametip1 => tbl_mehTip.tCode.Where(tbl_mehTip.sirOd <= dpShirina && tbl_mehTip.sirDo >= dpShirina)
如果可以的话,请寻求帮助或提供其他解决方案?
答案 0 :(得分:1)
这是不可能的,因为在tbl_Table2
属性中使用的Name
是class
而不是object
。您可以通过如下所示的构造函数来做到这一点:
public class tbl_Table1
{
[Key]
public int mpd_Id { get; set; }
public int Size { get; set; }
public string Name { get; set; }
public tbl_Table1(tbl_Table2 objTbl_Table2) =>
Name = (objTbl_Table2.SizeFrom <= Size && objTbl_Table2.SizeTo >= Size) ? objTbl_Table2.NameOfElement.ToString() : "-1"; // -1 is a default value
}
答案 1 :(得分:0)
您可以在控制器中包含此代码。实例化tbl_Table1
和tbl_Table2
并分配X属性,如下所示:
tbl_Table1.X = tbl_Table2.NameOfElement.Where(tbl_Table2.SizeFrom <= Size && tbl_Table2.SizeTo >= Size)
答案 2 :(得分:0)
首先,您必须在Where子句中使用lambda expression
。
tbl_Table2.NameOfElement.Where(x=> x.SizeFrom <= Size && x.SizeTo >= Size)
此外,您还必须使用context
连接到数据库并从那里检索数据或使用模型工厂或类似列表的东西。
因此使用这样的东西:
var Name = context.tbl_Table2.Where(x=>x.SizeFrom <= Size && x.SizeTo >= Size).FirstOrDefault()?.Name;