小编Gil*_*een的帖子

无法在LINQ to Entities查询中构造实体

存在由实体框架生成的称为产品的实体类型.我写了这个查询

public IQueryable<Product> GetProducts(int categoryID)
{
    return from p in db.Products
           where p.CategoryID== categoryID
           select new Product { Name = p.Name};
}
Run Code Online (Sandbox Code Playgroud)

下面的代码引发以下错误:

"无法在LINQ to Entities查询中构造实体或复杂类型Shop.Product"

var products = productRepository.GetProducts(1).Tolist();
Run Code Online (Sandbox Code Playgroud)

但是,当我使用select p而不是select new Product { Name = p.Name};它正常工作.

如何预先形成自定义选择部分?

c# entity-framework

373
推荐指数
5
解决办法
22万
查看次数

Linq语法 - 选择多个列

这是我用于实体模型的Linq语法

IQueryable<string> objEmployee = null;

objEmployee = from res in _db.EMPLOYEEs
              where (res.EMAIL == givenInfo || res.USER_NAME == givenInfo)
              select res.EMAIL;
Run Code Online (Sandbox Code Playgroud)

如何选择多列?就像我想选择res.ID一样.我怎么能收到那些?我认为,IQueryable是行不通的.这被称为Linq to SQL - 对吗?

c# linq entity-framework

87
推荐指数
3
解决办法
21万
查看次数

C#前缀参数名称@

可能重复:
变量名前的@符号在C#中是什么意思?

重复:

变量名前面的@符号在C#中是什么意思?

有时我会看到一些C#代码,其中一个方法参数以@为前缀,如下所示:

public static void SomeStaticMethod( SomeType @parameterName ) { }
Run Code Online (Sandbox Code Playgroud)

这是什么意思 ?它有一些重要的特殊含义吗?

我在NHibernate中创建一个EventListener,当我让VS.NET生成接口方法时,它生成如下的OnPostLoad方法:

public class PostLoadEventListener : IPostLoadEventListener
{
    public void OnPostLoad( PostLoadEvent @event )
    {

    }
}
Run Code Online (Sandbox Code Playgroud)

为什么是这样 ?

c#

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

变量'MyException'已声明但从未使用过

我需要清除这个警告:

try
{
    doSomething()
}
catch (AmbiguousMatchException MyException)
{
    doSomethingElse()
}
Run Code Online (Sandbox Code Playgroud)

编者告诉我:

变量'MyException'已声明但从未使用过

我怎样才能解决这个问题.

.net c# frameworks exception ambiguity

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

如果不首先将lambda表达式转换为委托或表达式树类型,则不能将lambda表达式用作动态分派的操作的参数

我正在使用.NET4.5和VS2013,我有这个查询dynamic从db 获得结果.

dynamic topAgents = this._dataContext.Sql(
    "select t.create_user_id as \"User\", sum(t.netamount) as \"Amount\" from transactiondetail t where t.update_date > sysdate -7 group by t.create_user_id")
    .QueryMany<dynamic>();
Run Code Online (Sandbox Code Playgroud)

以下语句失败并出现编译错误Cannot use a lambda expression as an argument to a dynamically dispatched operation without first casting it to a delegate or expression tree type ,甚至不允许我运行它

topAgents.ToList().Select(agent => new
{
    User = agent.User != null ? string.Format("{0}", agent.User).Replace("CORPNTGB\\", "") : null,
    Amount = agent.Amount
});
Run Code Online (Sandbox Code Playgroud)

虽然这个foreach工作得很好.

var data = new List<List<object>>(); …
Run Code Online (Sandbox Code Playgroud)

c# linq lambda .net-4.5

62
推荐指数
1
解决办法
5万
查看次数

linq不区分大小写(没有toUpper或toLower)

public Articles GetByName(string name, Categories category, Companies company)
{
    var query = from article in session.Linq<Articles>()
                where article.Name == name &&
                      article.Category == category &&
                      article.Company == company
                select article;
    return query.FirstOrDefault();
}
Run Code Online (Sandbox Code Playgroud)

如何查询不区分大小写.我可以使用toLower或toUpper但我想使用OrdinalIgnoreCase.可能吗?

c# linq

57
推荐指数
6
解决办法
7万
查看次数

如何检查系统是12小时还是24小时?

我试图确定当前的语言环境是设置为12或24小时,并相应地设置上午/下午.这就是我现在所拥有的,但它始终显示am/pm,无论它是否设置为24.

if (DateFormat.is24HourFormat(this))
{
    mHour = mCalendar.get(Calendar.HOUR_OF_DAY);
    int hourOfDay = mHour;
    if (hourOfDay>12)
        views.setTextViewText(R.id.AMPM, "pm");
    if (hourOfDay==12)
        views.setTextViewText(R.id.AMPM, "pm");
    if (hourOfDay<12)
        views.setTextViewText(R.id.AMPM, "am");
}
else {
    views.setTextViewText(R.id.AMPM, "");           
}
Run Code Online (Sandbox Code Playgroud)

time android locale

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

为什么匿名类型的Equals实现比较字段?

我只是想知道为什么该语言的设计者决定在匿名类型上实现Equals,类似于Equals值类型.这不是误导吗?

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

public static void ProofThatAnonymousTypesEqualsComparesBackingFields()
{
    var personOne = new { Name = "Pawe?", Age = 18 };
    var personTwo = new { Name = "Pawe?", Age = 18 };

    Console.WriteLine(personOne == personTwo); // false
    Console.WriteLine(personOne.Equals(personTwo)); // true
    Console.WriteLine(Object.ReferenceEquals(personOne, personTwo)); // false

    var personaOne = new Person { Name = "Pawe?", Age = 11 };
    var personaTwo = new …
Run Code Online (Sandbox Code Playgroud)

c# c#-3.0

55
推荐指数
4
解决办法
1万
查看次数

StreamWriter.Flush()和StreamWriter.Close()有什么区别?

StreamWriter.Flush()和之间的功能有什么区别StreamWriter.Close()

当我的数据不能被正确地写入一个文件,我既增加Flush()Close()对我的代码的结束.然而,我意识到,添加任一 Flush()Close()所允许的数据被正确写入.

当我阅读MSDN文档时,我无法准确了解每种方法的作用; 我只想到确保正确写入数据所需的一个或另一个.任何进一步的解释将不胜感激.


s要写入的字符串在哪里,这是我的代码当前的样子:

StreamWriter sw = File.CreateText("TextOutput.txt");
sw.Write(s);
sw.Flush();
sw.Close();
Run Code Online (Sandbox Code Playgroud)

根据答案的反馈,我在一个using块中重写了我的代码,该块实现IDisposable并将自动处理在处理对象时将流写入文件:

using (StreamWriter sw = File.CreateText("TextOutput.txt"))
{
    sw.Write(s);
}
Run Code Online (Sandbox Code Playgroud)

.net c# file-io

54
推荐指数
3
解决办法
7万
查看次数

如果string可解析为int,则选择解析的int

所以我有一个IEnumerable<string>可以包含可以解析int为的值,以及不能的值.

如您所知,Int32.Parse如果字符串无法更改为int,则抛出异常,同时Int32.TryParse可用于检查并查看是否可以在不处理异常的情况下进行转换.

所以我想使用LINQ查询来解析那些可以解析为int的字符串,而不会抛出异常.我有一个解决方案,但希望社区提出有关这是否是最佳方法的建议.

这就是我所拥有的:

int asInt = 0;
var ints = from str in strings
           where Int32.TryParse(str, out asInt)
           select Int32.Parse(str);
Run Code Online (Sandbox Code Playgroud)

所以你可以看到,我正在使用它asInt作为调用的临时空间TryParse,只是为了确定是否TryParse会成功(返回bool).然后,在投影中,我实际上正在执行解析.那感觉很难看.

这是使用LINQ过滤单行中的可解析值的最佳方法吗?

c# linq int

49
推荐指数
5
解决办法
4万
查看次数