不包含“Add”的定义,也没有接受第一个参数的扩展方法“Add”
本文关键字:Add 第一个 参数 扩展 方法 定义 包含 | 更新日期: 2023-09-27 18:34:22
我在使用行中的"add"时遇到问题:
直流添加(上校)列名,博士);
我在 Class1 中的类语句.cs应该处理这个问题:
数据类 DC = 新数据类();
错误代码:
'CertainDate.dataclass' does not contain a definition for 'Add' and no extension method 'Add' accepting a first argument of type 'CertainDate.dataclass' could be found (are you missing a using directive or an assembly reference?)
默认.aspx.cs
public static string GetDate(string mo, string dy, string yr)
{
string json = "";
string date1 = mo.ToString() + "/" + dy.ToString() + "/" + yr.ToString() + " 8:00 AM";
if (date1.Length > 6)
{
List<dataclass> returndata = new List<dataclass>();
dataclass dc = new dataclass();
DataSet ds = new DataSet();
DataTable dt = new DataTable();
string connStr = ConfigurationManager.ConnectionStrings["jsonobject"].ConnectionString;
string cmdStr = "SELECT ([idd],[datetime],[col1],[col2],[col3]) FROM [jsondata] WHERE [datetime]=@datetime;";
using (SqlConnection conn = new SqlConnection(connStr))
{
using (SqlCommand cmd = new SqlCommand(cmdStr, conn))
{
conn.Open();
cmd.Parameters.AddWithValue("@datetime", date1);
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
da.Fill(ds);
dt = ds.Tables[0];
foreach (DataRow dr in dt.Rows)
{
foreach (DataColumn col in dt.Columns)
{
dc.Add(col.ColumnName, dr[col]);
}
returndata.Add(dc);
}
}
}
}
System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
json = serializer.Serialize(returndata);
}
return json;
}
类1.cs
public class dataclass
{
public string idd { get; set; }
public string datetime { get; set; }
public string col1 { get; set; }
public string col2 { get; set; }
public string col3 { get; set; }
}
似乎您想将检索到的每个数据行添加到您的 returndata 列表中,如果是这种情况,那么您可能想要这个
....
foreach (DataRow dr in dt.Rows)
{
dataclass dc = new dataclass();
dc.idd = dr["idd"].ToString();
dc.datetime = dr["datetime"].ToString();
dc.col1 = dr["col1"].ToString();
dc.col2 = dr["col2"].ToString();
dc.col3 = dr["col3"].ToString();
returndata.Add(dc);
}
...
当然,错误是由您调用不存在的方法引起的。数据类没有 Add 方法,因此无法调用它。您可以定义它并传递数据行,但这确实是不必要的。
您还应该非常小心地评估返回的数据。如果您的行中没有任何空值,上面的代码效果很好。如果您有空值,那么您应该查看 DataRow.IsNull 方法
作为旁注,如果您在使用其他类时遇到很多这种情况(意味着转换在特定类的对象实例中加载的记录),那么您可以查看将删除所有这些代码的 ORM。例如,看看Dapper
所以在你的问题中,dataclass
是一个没有称为Add
的方法的自定义类 - 这就是你的错误所说的。
我相信您要做的是向returndata
添加一个新的dataclass
实例 - 这是一个List<>
并且确实有一个Add
方法
因此,更改此内容:
foreach (DataColumn col in dt.Columns)
{
dc.Add(col.ColumnName, dr[col]);
}
returndata.Add(dc)
为此 - 这是一个单行,它在添加到 returndata
期间创建 dataclass 的实例 - 您需要用col
中的属性填充 dataclass
的属性 - 我们不知道这些来自您的问题。
foreach (DataColumn col in dt.Columns)
{
returndata.Add(new dataclass(){
idd = ,//whatever column out of col
datetime = //do the same
});
}
或者,如果您更习惯(并且更容易调试)创建一个dataclass
,填充它,然后将其添加到returndata
然后执行以下操作:
foreach (DataColumn col in dt.Columns)
{
dc = new dataclass();
dc.idd = //whatever is in col, i.e col["idd"]
// do the same for all other properties in dc.
}
returndata.Add(dc);
您正在调用 dataclass 实例add
方法,但您没有定义 dataclass 中add
方法。
...
foreach (DataColumn col in dt.Columns)
{
dc.Add(col.ColumnName, dr[col]); //Error
}