如何在LINQ查询中使用.tag并传递给另一种方法?
|
我正在尝试通过查询来构建结果对象,该查询从列表项上的标签获取其where子句。这是构建列表的代码:
var holds = (from a in db.Record_HoldDatas
join b in db.LUT_Flavors on a.Flavor equals b.ID
where a.HoldStatus == \"Open\"
orderby a.DateOpened descending
select new { a.HoldID, a.Package, b.flavor, a.DateOpened }).ToList();
DateTime thenTime;
TimeSpan span;
foreach (var items in holds)
{
ListViewItem item = new ListViewItem(items.HoldID.ToString());
item.Tag = (int)items.HoldID;
//determine age
thenTime = (DateTime)items.DateOpened;
span = DateTime.Now - thenTime;
//add age
item.SubItems.Add(span.TotalHours.ToString(\"0.0\"));
lstvHolds.Items.Add(item);
//add flavor
item.SubItems.Add(items.flavor.ToString());
//add package
item.SubItems.Add(items.Package.ToString());
if (span.TotalHours >= 48)
{
item.BackColor = Color.Red;
}
else if (span.TotalHours >= 36 && span.TotalHours < 48)
{
item.BackColor = Color.Yellow;
}
else
{
item.BackColor = Color.Green;
}
}
从这里开始,我想使用所选项目中标签的值,使用WHERE子句中的标签作为约束,从DataContext创建一个新对象:
private void lstvHolds_DoubleClick(object sender, EventArgs e)
{
//create instance of the selected record
var existingRecord = from a in db.Record_HoldDatas
where a.HoldID == lstvHolds.SelectedItems[0].Tag
select a;
//open the hold window for viewing
frmNewFGHold viewHold = new frmNewFGHold(\"view\", existingRecord);
viewHold.Show();
}
Record_HoldData是从数据上下文创建的对象。 Record_HoldData.HoldID的类型为int。我得到的错误是:
运算符\'== \'不能应用于\'int \'和\'object \'类型的操作数
当我显示object.ToString()时,它显示正确的值,但是当我尝试将其解析为int时,出现此错误:
无法隐式转换类型
\'System.Linq.IQueryable \'
至
\'Coke_Hold_Database.Record_HoldData \'。
存在显式转换(您是否缺少演员表?
这很奇怪,因为如果我尝试将其转换,我将不会丢失演员表。我尝试了解析,转换和转换。都具有相同的错误。我很沮丧。有什么帮助吗?
没有找到相关结果
已邀请:
2 个回复
粳饶瓢部
属性中的
的装箱:
芦歉竭皑