这是一个很长的机会,但我有一个有趣的编码情况,我希望能够动态创建匿名类,但能够将它们作为参数传递给期望接口或子类的方法。换句话说,我想做这样的事情:
public class MyBase { ... }
public void Foo(MyBase something)
{
...
}
...
var q = db.SomeTable.Select(t =>
new : MyBase // yeah, I know I can't do this...
{
t.Field1,
t.Field2,
我正在使用MVC 4和Linq到SQL,在我的控制器类中,我打算从一个有几个表的查询中获得一个列表,并将它显示为一个列表,其中M是一个模型类:
在控制器里我有这个
public List<HomeViewModel> GetHomeViewModel()
{
dynamic ReservationDay = (from c in hutRes.Clients
join r in hutRes.Reservations on c.ID_Client equals r.FK_Client
var products1 = new List<Product> {
new Product { Name = "Apple", Price = 2 }};
var products2 = from product in products1
select new { product.Name, product.Price };
foreach (var p in products1)
Console.WriteLine(p);
foreach (var p in products2)
Console.Write
可能重复:
我是,不是在问它是怎么工作的。我是,而不是,问它是否会影响性能。我已经知道答案了。
我想知道是什么激励了MS C#团队首先将它添加到语言中。你不会在语言中添加琐碎的东西。它一定解决了一个值得注意的问题。那是什么问题?
我看到的最接近“它解决的问题”的例子是使用匿名类型时,如下所示:
var linqResult = from element in SomeCollection s
elect new { element.A, element.B }
这种用法的讽刺之处在于,样式和编码标准指南(如Microsoft提供的)建议编码器在结果
我使用vars来捕获匿名类型,这些匿名类型是从数据库中的表中选择的。太棒了,我喜欢。然而,由于var不能是方法参数,该技术促进了不能分解的过长方法的演变。
...
var res1 = (from t1 in dao.t1
select new { t1.Id, t1.Cost, t1.Size }).ToList();
<do stuff with res1 ...>
var res2 = (from r1 in res1 where r1.Cost > 100
select new { r1.Id, r1.Size }).
在Linq中(数字)
默认比较器如何解决以下问题?
//The following is essentially a select distinct
var x = from student in class
group student by new {student.MajorId, student.GradeId} into performanceStudentGroup
select new { performanceStudentGroup.Key.MajorId, performanceStudentGroup.Key.GradeId};
显然,为
为什么在c#中我们不能将匿名对象包装在对象列表中?例如,我看过 in StackOverFlow C# Linq, object definition does not contains a property
var anynomousObject = new { Amount = 10, weight = 20 };
List<object> ListOfAnynomous = new List<object> { anynomousObject, anynomousObject };
var productQuery =
from prod
我有一些linq方法,当它执行查询时,它返回某种匿名类型。
我希望将这个匿名类型返回到我的服务层,以便在它上执行一些逻辑和内容。
不过我不知道怎么还。
我以为我能做到
public List<T> thisIsAtest()
{
return query;
}
但我知道这个错误
Error 1 The type or namespace name 'T' could not be found (are you missing a using directive or an assembly reference?)
所以不知道我错过了什么组件,或者甚
我在将匿名类的List<>放入缓存时遇到了问题。
var cache = new DataCacheFactory().GetCache("default");
var parts = somethingIQueryable.Select(i => new { i.s1, i.s2 } );
cache.Put("somekey", parts.ToList(), TimeSpan.FromMinutes(2));
这会抛出序列化异常。但是,如果我将数据放在如下所示的类中,它会起作用:
public class A { public strin
我不太明白为什么这个Linq语句不能像我期望的那样工作:
Dim distinctSurchargesList = (From thisparent As Parent In ThisParentCollection _
From thisChild As Child In thisparent.theseChildren _
Select New With {.childId = thischild.Id}).Distinct()
我假设这将
这里的上下文是我为DataGridView使用了一种特殊的DataSource,这是一个匿名类型,可以按如下方式创建:
var data = new[] { new { A = "A", B = 1 }, new { A = "B", B = 2 }, new { A = "C", B = 3 }};
问题是,如果我为DataGridView使用上面的数据源,我不能通过单击DataGridView的单元格来编辑它的内容。
myDataGridView.DataSource = data;
你能给我解释一下为什么和如何使它可编辑吗?或者仅仅是我们不
我确信我做了一些非常错误的事情,但我最好去问问专家。
在第三行,我得到了错误Value of type <anonymous type> cannot be converted to <anonymous type>
Dim Query = (From c In Db.web Select New With {.AA = c.AA}).ToList
Dim v = New With {.Amount = 108}
Query.Add(v)
这里我漏掉了什么?
这是在中找到的相关主题的后续文章
如果我正在执行以下操作:
var query = (SearchString == "" ?
(
from MEDIA in xdoc.Descendants("MEDIA")
select new
{
PLAY = MEDIA.Element("PLAY").Value,
PIC = MEDIA.Elemen
我有一个生成匿名类型的Linq查询。然而,现在我想使用这个匿名类型的参数,但它似乎不起作用。
For Each obj As Object in Query
Dim row As DataRow = obj.parameter
...
Next obj
现在编译器在表达式obj.parameter上抛出一个错误:"Option Strict on不允许后期绑定“。如果我理解正确的话,编译器不知道匿名类型的参数。我尝试了Option Infer On (并作为对象删除),基于Google的结果,但它没有帮助。这似乎是有道理的,因为对我来说,它似乎总是在扩大转换。
有没有办法修复这个问题,
我有一个匿名类型,它是新的{string a,string b}的匿名对象。
var myObject = select new {
a = "a",
b = "b"
}
我想初始化该对象,而不必输入任何信息。
就像。
Anonymouse{string, string} myObject = new Anonymous;
我被困在这上面,我想得到一些帮助。
我有一个现有的web应用程序,使用EF和POCO对象。我希望通过WCF(JSON)公开我的一些对象来改进客户端体验。我的工作很好,但我不确定如何处理派生对象(不确定这是否是正确的术语)或IEnumerable匿名对象(如果愿意)。
假设我有3个表,结构如下:
模板
ID
Template
群
ID
Group
实例
ID
TemplateID
GroupID
这显然是一对多的关系。我的导航属性设置正确,获得强类型的对象属性非常有效。但是,如何通过连线发送序列化的匿名类型对象。就像发送所有与groupid=1相等的实例并包含模板和对象的名称的对象一样。
我是缺少了什么,还是必须为WCF创建另一个
我有以下代码,它创建了一个分配给smtpClient变量的动态对象。
public class TranferManager
{
public void Tranfer(Account from, Account to, Money amount)
{
// Perform the required actions
var smtpClient = New.SmtpClient();
smtpClient.Send("info@bank.com", "from.Email", "Tranfe
LINQ的工作原理如下所示。查询因问题而缩短。
var query = (
from p in DBContext.Products
from pp in DBContext.Pricing
select new { p,pp }
)
现在假设我想要这个查询的列表,例如:
var query = List<IQueryable<dynamic>>(); //this is what I assumed the return type would be but no.
f
// x is compiled as an int
var x = 10;
// y is compiled as a string
var y = "Hello";
// z is compiled as int[]
var z = new[] { 0, 1, 2 };
但
// ano is compiled as an anonymous type
var ano = new { x1 = 10, y1 = "Hello" };
创建的ano对象的属性是只读的.我想弄清楚为什么这些属性是只读的。谢谢你的建议?
编辑:
var ano1 = n
这个匿名类型在现实生活中怎么会有用呢?为什么厌食是好的呢?
// sampleObject is an instance of a simple anonymous type.
var sampleObject =
new { FirstProperty = "A", SecondProperty = "B" };