使用下面的简单示例,使用Linq to SQL从多个表返回结果的最佳方法是什么?
说我有两张桌子:
Dogs: Name, Age, BreedId
Breeds: BreedId, BreedName
Run Code Online (Sandbox Code Playgroud)
我想用他们的狗归还所有的狗BreedName.我应该让所有的狗使用这样的东西没有问题:
public IQueryable<Dog> GetDogs()
{
var db = new DogDataContext(ConnectString);
var result = from d in db.Dogs
join b in db.Breeds on d.BreedId equals b.BreedId
select d;
return result;
}
Run Code Online (Sandbox Code Playgroud)
但如果我想要品种的狗并尝试这个我有问题:
public IQueryable<Dog> GetDogsWithBreedNames()
{
var db = new DogDataContext(ConnectString);
var result = from d in db.Dogs
join b in db.Breeds on d.BreedId equals b.BreedId
select new
{
Name = d.Name,
BreedName = b.BreedName
};
return result; …Run Code Online (Sandbox Code Playgroud) 我有一个返回匿名类型的查询,查询在方法中.你怎么写的:
public "TheAnonymousType" TheMethod(SomeParameter)
{
using (MyDC TheDC = new MyDC())
{
var TheQueryFromDB = (....
select new { SomeVariable = ....,
AnotherVariable = ....}
).ToList();
return "TheAnonymousType";
}
}
Run Code Online (Sandbox Code Playgroud) 我有一些子查询,其数据类型为var.这些正在开发数据表.我想将这些传递给另一种方法,我该怎么做?例如:
var subquery1= from results in table.AsEnumerable()
where //some condition
select new
{
column1=results.field1,
column2 = results.field2
etc.,
}
var subquery2= from results in table.AsEnumerable()
where //different condition
select new
{
column1=results.field1,
column2 = results.field2
etc.,
}
Run Code Online (Sandbox Code Playgroud)
现在,我想定义一些方法将这些subquery1,subquery2作为变量传递.例如:
void updategrid(var queries)
{
//some logic
}
Run Code Online (Sandbox Code Playgroud)
并执行方法:
updategrid(subquery1);
updategrid(subquery2);
Run Code Online (Sandbox Code Playgroud)
当我尝试在方法中使用var时,定义它并不喜欢它.请帮我说明怎么做.谢谢.
可能重复:
如何将匿名类型传递给方法?
我有以下LINQ语句,其输出必须在另一种方法中处理:
var data = from lines in File.ReadAllLines(TrainingDataFile)
.Skip(ContainsHeader ? 1 : 0)
let f = lines.Split(new[] { FieldSeparator }).ToList<String>()
let target = f[TargetVariablePositionZeroBased]
select new { F=f, T=target };
Run Code Online (Sandbox Code Playgroud)
采用此数据的方法中参数的数据类型应该是什么?
可能重复:
匿名类的返回类型是什么
我正在使用如下查询创建一个匿名类型:
来电代码:
var query= from p in _db.ExecuteDataSet(SQL).Tables[0].AsEnumerable()
select new {
ProductCode = p.Field<string>("PRODUCT_CODE"),
ProductName = p.Field<string>("PRODUCT_NAME")
};
foreach(var product in query)
{
WriteProduct(product);
}
Run Code Online (Sandbox Code Playgroud)
方法如下:
void WriteProduct(object prod)
{
// access the product
}
Run Code Online (Sandbox Code Playgroud)
我无法获得该WriteProduct方法的正确参数类型.请帮我.