存在由实体框架生成的称为产品的实体类型.我写了这个查询
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};它正常工作.
如何预先形成自定义选择部分?
这是我用于实体模型的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#中是什么意思?重复:
有时我会看到一些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)
为什么是这样 ?
我需要清除这个警告:
try
{
doSomething()
}
catch (AmbiguousMatchException MyException)
{
doSomethingElse()
}
Run Code Online (Sandbox Code Playgroud)
编者告诉我:
变量'MyException'已声明但从未使用过
我怎样才能解决这个问题.
我正在使用.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) 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.可能吗?
我试图确定当前的语言环境是设置为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) 我只是想知道为什么该语言的设计者决定在匿名类型上实现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) 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) 所以我有一个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过滤单行中的可解析值的最佳方法吗?