0
值我的问题是一个类似于此:Select a specific column based on another column's value但在LINQ,使用VS2010,C#,.NET 4.0和LINQ到实体选择列基于另一列与LINQ
下面是我在代码段与一个问题:
var BillingNumbers = (from o in mycontext.MyOrders
where o.Status.Description.Trim().ToUpper().Equals("SHIPPED")
&& (o.ActualShipDate >= date1.Date && o.ActualShipDate < date2.Date)
select new
{BillingNumber = (
o.SiteID == "NYC"? o.NYCBillingNumber.Trim():
o.SiteID == "DAL" ? o.DallasBillingNumber.Trim(): "unknown")
});
foreach (var billingnumber in BillingNumbers)
{
sqlcmd = MyDatabase.GetStoredProcCommand("MyBillingNumberSP") as SqlCommand;
sqlcmd.CommandTimeout = Int32.Parse(Settings.Default.SQL_COMMAND_TIMEOUT.ToString());
MyDatabase.AddInParameter(sqlcmd, "@BillingNumber", DbType.String, billingnumber);
MyDatabase.AddOutParameter(sqlcmd, "@MyOutputParam", DbType.Boolean, 1);
LobjDS = MyDatabase.ExecuteDataSet(sqlcmd); //GETTING AN ERROR HERE
bool JobbingApplied = Convert.ToBoolean(MyDatabase.GetParameterValue(sqlcmd, "@MyOutputParam"));
Console.WriteLine(billingnumber);
}
的ExecuteDataSet命令抛出与消息一个InvalidCastException:
无法参数值从<转换> f__AnonymousType0`1到一个字符串。
什么是错误的,为什么这个匿名类型试图将它解释为字符串时抛出一个错误?
谢谢。 有没有比billingnumber.BillingNumber更优雅的方式? – FMFF
您可以将您的选择更改为'选择 o.SiteID ==“NYC”? o.NYCBillingNumber.Trim(): o.SiteID ==“DAL”? o.DallasBillingNumber.Trim():“unknown”)'(它将返回一个IEnumerable'),然后你可以保留原来的代码 –
Keith