无法将类型'system.collections.generic.list dynamic隐式转换为system.collection.generic.list到mvc.user [英] cannot implicitly convert type 'system.collections.generic.list dynamic to system.collection.generic.list to mvc.user

查看:744
本文介绍了无法将类型'system.collections.generic.list dynamic隐式转换为system.collection.generic.list到mvc.user的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

public List<user> GetList(String MatchTypeName)
        {
                var result = new List<dynamic>();
                
                using (SqlConnection conn = new SqlConnection(@"Server= server_name; Uid=xyz;pwd=pass; database=db_name"))
                {
                    try
                    {
                                              
                        #region commented
                        conn.Open();

                        SqlCommand dCmd = new SqlCommand("SP_WEBBASEDREPorTS", conn);

                        dCmd.CommandType = CommandType.StoredProcedure;

                        dCmd.Parameters.Add(new SqlParameter("@MatchType", MatchTypeName));

                        dCmd.Parameters.Add(new SqlParameter("@ModeFlag", "Batting Industry Average"));

                        SqlDataAdapter da = new SqlDataAdapter(dCmd);
                        DataSet ds = new DataSet();
                        DataTable table = new DataTable();
                        ds.Clear();
                            
                        da.Fill(table);
                        conn.Close();


                        foreach (DataRow row in table.Rows)
                        {
                            var obj = (IDictionary<string,>)new ExpandoObject();
                            foreach (DataColumn col in table.Columns)
                            {
                                obj.Add(col.ColumnName, row[col.ColumnName]);
                            }
                            result.Add(obj);
                        }
                        return result;
                       
                    }
                    catch
                    { 
                    
                    }
                }
                return result;           
        }



任何人都可以让我知道如何解决这个问题。错误是:



无法隐式转换类型'system.collections.generic.list< dynamic> to system.collection.generic.list< / dynamic>



返回结果时会发生这种情况,例如:return result


Can any one let me know how to solve this problem.Error is:

cannot implicitly convert type 'system.collections.generic.list<dynamic> to system.collection.generic.list</dynamic>

It is happening while returning the result e.g: return result

推荐答案

错误非常简单:您定义了返回类型列表< user> ,并尝试返回列表与LT;动态>

只需创建与返回类型方法相同类型的结果,并更改代码以填充其字段,而不是尝试填充来自数据源的所有可能字段。为什么你认为系统能够将你的动态数据映射到一个类?
The error is quite straightforward: you define a return type of List<user>, and you try to return List<dynamic>.
Simply create the result the same type as the method returning type and change the code to fill it's fields rather than trying to fill in all possible fields coming from your data source. Why do you think that the system is able to map your dynamic data to a class?


我找到了解决方案,如果有人想要请参考这个



XYZ_MVC.Models.XYZEntities db = new Models.XYZEntities();

List< SelectListItem> selectMatchTypeList = new List< SelectListItem>();





public ActionResult Index(string MatchTypeName)

{



foreach(db.MatchTypeMasters中的MatchTypeMaster MatchType)

{

SelectListItem selectMatchTypes = new SelectListItem

{

Text = MatchType.MatchTypeName,

Value = MatchType.MatchTypeID,



};



selectMatchTypeList.Add(selectMatchTypes);

ViewBag.MatchTypeName = selectMatchTypeList;

}



if(string.IsNullOrEmpty(MatchTypeName))

{

MatchTypeName =All;

var bugedlist = GetList(MatchTypeName);

返回查看(bugedlist);

}

else

{

var GridFill = GetList(MatchTypeName);

返回查看(GridFill);

}



返回查看();



}



private List< idictionary> ConvertToDictionary(DataTable dtObject)

{

var columns = dtObject.Columns.Cast< datacolumn>();



var dictionaryList = dtObject.AsEnumerable()

.Select(dataRow => columns

.Select(column =>

new {Column = column.ColumnName,Value = dataRow [column]})

.ToDictionary(data => data.Column,data => data.Value))。ToList()。ToArray( );



返回dictionaryList.ToList< idictionary>();

}



public List< idictionary> GetList(String MatchTypeName)

{

DataSet ds = new DataSet();

// var modelList = new List< user>() ;

// var result = new List< dynamic>();



using(SqlConnection conn = new SqlConnection(@Server = Server_Name; Uid = sa; pwd = Pass; database = DB_Name))

{

try

{



#region评论

conn.Open();



SqlCommand dCmd = new SqlCommand(SP_WEBBASEDREPorTS ,conn);



dCmd.CommandType = CommandType.StoredProcedure;



dCmd.Parameters.Add (new SqlParameter(@ MatchType,MatchTypeName));



dCmd.Parameters.Add(new SqlParameter(@ ModeFlag,All)); < br $> b $ b

SqlDataAdapter da = new SqlDataAdapter(dCmd);



DataTable table = new DataTable();

ds.Clear();



da.Fill(ds);

conn.Close();



var das = ds.Tables [0] .AsEnumerable();



#endregion

}

catch

{



}

}



返回ConvertToDictionary(ds.Tables [0]);



}

}



查看代码:



@using System.Dynamic

@model List< system.collections.idictionary>

@ {

var result = new List< dynamic>();



foreach(模型中的var emprow)

{

var row =(IDictionary< string,>)new ExpandoObject();

Dictionary< string,> eachEmpRow =(Dictionary< string,>)emprow;



foreach(KeyValuePair< string,> everyEmpRow中的keyValuePair)

{

row.Add(keyValuePair);

}

result.Add(row);

}

var grid = new WebGrid(result);

}



@using(@ Html.BeginForm(Index) ,ICCRpt,FormMethod.Get))

{



@ Html.DropDownList(MatchTypeName,全选);

< input type =submitvalue =Filter/>

}



@ if(@Model!= null)

{

@ grid.GetHtml(tableStyle:grid,headerStyle:head,alternatingRowStyle:alt);

}
I found out the solution if any one want Please refer this

XYZ_MVC.Models.XYZEntities db = new Models.XYZEntities();
List<SelectListItem> selectMatchTypeList = new List<SelectListItem>();


public ActionResult Index(string MatchTypeName)
{

foreach (MatchTypeMaster MatchType in db.MatchTypeMasters)
{
SelectListItem selectMatchTypes = new SelectListItem
{
Text = MatchType.MatchTypeName,
Value = MatchType.MatchTypeID,

};

selectMatchTypeList.Add(selectMatchTypes);
ViewBag.MatchTypeName = selectMatchTypeList;
}

if (string.IsNullOrEmpty(MatchTypeName))
{
MatchTypeName = "All";
var bugedlist = GetList(MatchTypeName);
return View(bugedlist);
}
else
{
var GridFill = GetList(MatchTypeName);
return View(GridFill);
}

return View();

}

private List<idictionary> ConvertToDictionary(DataTable dtObject)
{
var columns = dtObject.Columns.Cast<datacolumn>();

var dictionaryList = dtObject.AsEnumerable()
.Select(dataRow => columns
.Select(column =>
new { Column = column.ColumnName, Value = dataRow[column] })
.ToDictionary(data => data.Column, data => data.Value)).ToList().ToArray();

return dictionaryList.ToList<idictionary>();
}

public List<idictionary> GetList(String MatchTypeName)
{
DataSet ds = new DataSet();
//var modelList = new List<user>();
// var result = new List<dynamic>();

using (SqlConnection conn = new SqlConnection(@"Server= Server_Name; Uid=sa;pwd=Pass; database=DB_Name"))
{
try
{

#region commented
conn.Open();

SqlCommand dCmd = new SqlCommand("SP_WEBBASEDREPorTS", conn);

dCmd.CommandType = CommandType.StoredProcedure;

dCmd.Parameters.Add(new SqlParameter("@MatchType", MatchTypeName));

dCmd.Parameters.Add(new SqlParameter("@ModeFlag", "All"));

SqlDataAdapter da = new SqlDataAdapter(dCmd);

DataTable table = new DataTable();
ds.Clear();

da.Fill(ds);
conn.Close();

var das = ds.Tables[0].AsEnumerable();

#endregion
}
catch
{

}
}

return ConvertToDictionary(ds.Tables[0]);

}
}

VIEW Code:

@using System.Dynamic
@model List<system.collections.idictionary>
@{
var result = new List<dynamic>();

foreach (var emprow in Model)
{
var row = (IDictionary<string,>)new ExpandoObject();
Dictionary<string,> eachEmpRow = (Dictionary<string,>)emprow;

foreach (KeyValuePair<string,> keyValuePair in eachEmpRow)
{
row.Add(keyValuePair);
}
result.Add(row);
}
var grid = new WebGrid(result);
}

@using (@Html.BeginForm("Index", "ICCRpt", FormMethod.Get))
{

@Html.DropDownList("MatchTypeName", "Select All");
<input type="submit" value="Filter" />
}

@if (@Model != null)
{
@grid.GetHtml(tableStyle: "grid", headerStyle: "head", alternatingRowStyle: "alt");
}


我的解决方案是检查列表名称是否有相同的名称.. !!!!
My Solution Is Check List Name every where whether it has same name..!!!!


这篇关于无法将类型'system.collections.generic.list dynamic隐式转换为system.collection.generic.list到mvc.user的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆