如何将匿名类型作为参数传递给其他函数?考虑这个例子:
var query = from employee in employees select new { Name = employee.Name, Id = employee.Id };
LogEmployees(query);
Run Code Online (Sandbox Code Playgroud)
query
这里的变量没有强类型.我应该如何定义我的LogEmployees函数来接受它?
public void LogEmployees (? list)
{
foreach (? item in list)
{
}
}
Run Code Online (Sandbox Code Playgroud)
换句话说,我应该使用什么而不是LogEmployees
标记.
我想在MVC中使用DropDownListFor
@foreach (var item in Model)
{
@Html.DropDownListFor(modelItem => item.TitleIds, new SelectList(ViewBag.TitleNames as System.Collections.IEnumerable, "TitleId", "Title.TitleText"), "No: " + ViewBag.MagNo, new { id = "TitleIds" })
}
Run Code Online (Sandbox Code Playgroud)
在控制器中
public ActionResult ArticleList(int id)
{
ArticleWriter_ViewModel viewModel = new ArticleWriter_ViewModel();
Func<IQueryable<NumberTitle>, IOrderedQueryable<NumberTitle>> orderByFunc = null;
Expression<Func<NumberTitle, bool>> filterExpr = null;
if (id > 0)
{
filterExpr = p => p.MagazineId.Equals(id);
}
var wholeTitles = unitOfWork.NumberTitleRepository.Get(filterExpr, orderByFunc, "Magazine,Title").ToList();
ViewBag.MagNo = wholeTitles[0].Magazine.MagNo.ToString();
ViewBag.MagId = wholeTitles[0].Magazine.Id;
ViewBag.TitleNames = wholeTitles;
return View("../Panel/Magazine/ArticleList", "_BasicLayout", viewModel);
}
Run Code Online (Sandbox Code Playgroud)
但是我得到了这个错误 …
除其他外,还有两种类型的调用约定--stdcall和cdecl.我对他们几乎没有问题:
我是C#(和OOP)的新手.当我有一些如下代码:
class Employee
{
// some code
}
class Manager : Employee
{
//some code
}
Run Code Online (Sandbox Code Playgroud)
问题1:如果我有其他代码执行此操作:
Manager mgr = new Manager();
Employee emp = (Employee)mgr;
Run Code Online (Sandbox Code Playgroud)
这Employee
是一个Manager
,但当我把它这样投射到Employee
它意味着我正在向上倾斜它?
问题2:
当我有几个Employee
类对象时,有些但不是全部都是它们Manager
,我怎么能在可能的情况下将它们转发?
门禁办理登机手续将创建一个名称以***NO_CI***结尾的变更集?NO_CI代表什么?我可以想到"没有检查错误"但它没有意义.
这很奇怪.我在Visual Studio 2008中为我的解决方案添加了一个全新的Web应用程序项目.
创建了一个母版页.零修改.创建了一个新的webform.将其母版页设置为刚刚创建的MP.
仍然没有修改.没有标记.没有用户控制.没有参考.没有.但是,当我尝试运行它时,我得到:
Content controls have to be top-level controls in a content page or a nested master page that references a master page.
HttpException (0x80004005): Content controls have to be top-level controls in a content page or a nested master page that references a master page.]
System.Web.UI.MasterPage.CreateMaster(TemplateControl owner, HttpContext context, VirtualPath masterPageFile, IDictionary contentTemplateCollection) +8665016
System.Web.UI.Page.get_Master() +51
System.Web.UI.Page.ApplyMasterPage() +15
System.Web.UI.Page.PerformPreInit() +45
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +282
Run Code Online (Sandbox Code Playgroud)
如果我在这个解决方案之外的独立项目中做同样的事情,它可以正常工作.请记住,如果这有任何区别,我正在使用Web应用程序项目与网站项目.
网络形式:
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="WebUI._Default" MasterPageFile="~/Site1.Master" %>
<!DOCTYPE …
Run Code Online (Sandbox Code Playgroud) 我有一个DataTable
从SQL查询填充到本地数据库,但我不知道如何从中提取数据.主要方法(在测试程序中):
static void Main(string[] args)
{
const string connectionString = "server=localhost\\SQLExpress;database=master;integrated Security=SSPI;";
DataTable table = new DataTable("allPrograms");
using (var conn = new SqlConnection(connectionString))
{
Console.WriteLine("connection created successfuly");
string command = "SELECT * FROM Programs";
using (var cmd = new SqlCommand(command, conn))
{
Console.WriteLine("command created successfuly");
SqlDataAdapter adapt = new SqlDataAdapter(cmd);
conn.Open();
Console.WriteLine("connection opened successfuly");
adapt.Fill(table);
conn.Close();
Console.WriteLine("connection closed successfuly");
}
}
Console.Read();
}
Run Code Online (Sandbox Code Playgroud)
我用来在我的数据库中创建表的命令:
create table programs
(
progid int primary key identity(1,1),
name nvarchar(255),
description nvarchar(500),
iconFile …
Run Code Online (Sandbox Code Playgroud) 我正在将我的项目从VS2010转换为VS2012.但是我在某些项目中遇到了_MSC_VER链接器错误.经过长时间浏览谷歌后,我发现问题是由于VS2010中创建的库与VS2012的链接.
如何找出导致错误的项目?我在这里引用错误:
Error 6 error LNK2038: mismatch detected for '_MSC_VER': value '1600' doesn't match value '1700' in CppFile1.obj D:\ProjectLocation\Projectname1.lib(CppFile2.obj) Projectname2
Error 15 error LNK2001: unresolved external symbol "private: static void __cdecl std::locale::facet::_Facet_Register(class std::locale::facet *)" (?_Facet_Register@facet@locale@std@@CAXPAV123@@Z) D:\ProjectLocation\Projectname1.lib(CppFile3.obj) Projectname2
Error 13 error LNK2038: mismatch detected for '_MSC_VER': value '1600' doesn't match value '1700' in CppFile1.obj D:\ProjectLocation\Projectname1.lib(CppFile4.obj) Projectname2
Error 12 error LNK2038: mismatch detected for '_MSC_VER': value '1600' doesn't match value '1700' in CppFile1.obj D:\ProjectLocation\Projectname1.lib(CppFile5.obj) Projectname2
Error 10 error LNK2038: mismatch detected for …
Run Code Online (Sandbox Code Playgroud) Microsoft的C++编译器(cl.exe
包含在Visual Studio中)提供了几个优化开关.大多数它们之间的差异似乎是不言自明的,但我不清楚它之间的区别/O2
(它优化代码以获得最大速度)和/Ox
(选择"完全优化").
我试着阅读文档的/Ox
选项,它似乎证实,该交换机还支持优化的最高速度,而不是大小:
所述
/Ox
编译器选项产生在较小尺寸有利于代码的执行速度.
但特别是,"备注"部分下面的声明引起了我的注意:
通常,指定
/O2
(最大化速度)而不是/Ox
.
所以我的问题是,为什么要一个普遍青睐/O2
了/Ox
?后一个选项是否允许已知的特定优化导致无法预料的错误或其他意外行为?是否只是获得的优化量不值得额外的编译时间?或者这只是一个完全没有意义的"推荐",因为它/O2
是VS中的默认选项?
c++ compiler-optimization compiler-options visual-studio visual-c++
我试图使用lambda函数选择商店并将结果转换为SelectListItem,以便我可以渲染它.但它抛出" 选择子句中的表达式类型不正确 "错误:
IEnumerable<SelectListItem> stores =
from store in database.Stores
where store.CompanyID == curCompany.ID
select (s => new SelectListItem { Value = s.ID, Text = s.Name} );
ViewBag.storeSelector = stores;
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
编辑:
另外,在这种情况下如何将Int转换为String?以下不起作用:
select (s => new SelectListItem { Value = s.ID.ToString(), Text = s.Name} );
select (s => new SelectListItem { Value = s.ID + "", Text = s.Name} );
Run Code Online (Sandbox Code Playgroud)
编辑2:
找出Int到String的转换.微软很常见的是忘记包含int2string转换函数.以下是每个人都在使用的实际解决方法,具有完全可用的语法:
select new SelectListItem { Value = SqlFunctions.StringConvert((double)store.ID), Text = store.Name };
Run Code Online (Sandbox Code Playgroud)
称这种情况荒谬是轻描淡写的.