小编meJ*_*rew的帖子

如何将匿名类型作为参数传递?

如何将匿名类型作为参数传递给其他函数?考虑这个例子:

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标记.

c# parameters function anonymous-types

126
推荐指数
7
解决办法
12万
查看次数

无法动态分派扩展方法

我想在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)

但是我得到了这个错误 …

c# asp.net-mvc asp.net-mvc-3

110
推荐指数
3
解决办法
5万
查看次数

stdcall和cdecl

除其他外,还有两种类型的调用约定--stdcallcdecl.我对他们几乎没有问题:

  1. 当调用cdecl函数时,调用者如何知道它是否应该释放堆栈?在调用站点,调用者是否知道被调用的函数是cdecl还是stdcall函数?它是如何工作的 ?调用者如何知道它是否应该释放堆栈?或者它是连接者的责任吗?
  2. 如果声明为stdcall的函数调用一个函数(其调用约定为cdecl),或者相反,那么这是不合适的吗?
  3. 一般来说,我们可以说哪个调用会更快--cdecl或stdcall?

c++ cdecl stdcall

82
推荐指数
4
解决办法
10万
查看次数

沮丧和向上倾斜

我是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,我怎么能在可能的情况下将它们转发?

c# oop downcast upcasting

80
推荐指数
4
解决办法
9万
查看次数

***NO_CI***代表什么?

门禁办理登机手续将创建一个名称以***NO_CI***结尾的变更集?NO_CI代表什么?我可以想到"没有检查错误"但它没有意义.

tfsbuild checkin tfs2010

67
推荐指数
2
解决办法
2万
查看次数

母版页奇怪 - "内容控件必须是内容页面中的顶级控件或引用母版页的嵌套母版页."

这很奇怪.我在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)

asp.net master-pages visual-studio-2008

66
推荐指数
3
解决办法
14万
查看次数

如何从DataTable中提取数据?

我有一个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)

c# sql ado.net

66
推荐指数
4
解决办法
33万
查看次数

错误LNK2038:检测到'_MSC_VER'不匹配:值'1600'与CppFile1.obj中的值'1700'不匹配

我正在将我的项目从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)

c++ msbuild visual-studio-2010 visual-c++

65
推荐指数
2
解决办法
13万
查看次数

/ Ox和/ O2编译器选项有什么区别?

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++

64
推荐指数
2
解决办法
2万
查看次数

如何在LINQ select语句中使用Lambda

我试图使用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)

称这种情况荒谬是轻描淡写的.

c# linq asp.net-mvc lambda

58
推荐指数
4
解决办法
40万
查看次数