C# 用于选择两个整数列的linq查询

C# 用于选择两个整数列的linq查询,c#,gmail,C#,Gmail,我为表中的select两列添加了以下代码。但返回模块是下划线的。请帮帮我 public List<module_details> GetModuleDetails(int modId) { var module = (from a in connection.module_details where a.module_id == modId select new

我为表中的select两列添加了以下代码。但返回模块是下划线的。请帮帮我

public List<module_details> GetModuleDetails(int modId)
{
            var module = (from a in connection.module_details
                       where a.module_id == modId
                       select new 
            {
                id = a.module_id,
                marks = a.module_marks
            }
            ).ToList();

            return module;
}
public List GetModuleDetails(int modId)
{
var module=(来自连接中的a.module\u详细信息
其中a.module_id==modId
选择新的
{
id=a.module_id,
标记=a.模块标记
}
).ToList();
返回模块;
}

您的
模块
变量是一个匿名类型列表,具有两个属性
id
标记
。这就是您用
new{..}
声明的内容

这不能作为
模块\u详细信息的列表返回,因为就编译器而言,这些是完全不同的类型。您需要选择模块详细信息的新实例:

        var module = (from a in connection.module_details
                   where a.module_id == modId
                   select new module_details
        {
            id = a.module_id,
            marks = a.module_marks
        }
        ).ToList();
此代码示例假定module_details类具有这些属性,并且它们是可公共设置的。很可能命名错误,或者您需要调用
模块\u详细信息
上的(非默认)构造函数来执行此操作-取决于
模块\u详细信息
的定义


另一方面,如果您不想返回
模块\u详细信息
,则需要相应地更改方法签名。

仅返回两列的最简单方法可能是创建一个类来保存数据,并将数据作为该类的集合返回,例如

//类型可能不正确,不确定原始类型是什么
公共类模块_子集{public int id;public int marks;}
//选择模块_子集列表中的两列
公共IList GetModuleDetails(int modId)
{
var module=(来自连接中的a.module\u详细信息
其中a.module_id==modId
选择新模块\u子集
{
id=a.module_id,
标记=a.模块标记
}).ToList();
返回模块;
}

您想返回什么?只有两个字段有效,其余字段无效的模块\u详细信息列表,或者只有两个字段组成的新类?我想返回仅包含“选择模块\u id”和“模块标记”列的查询。尊敬的Joachim,我添加以下代码来显示查询详细信息。但它不起作用。dataGridView1.DataSource=(logic.GetModuleDetails(int.Parse(textBox1.Text))@LakshihaGihan到底是什么不起作用?错误的结果?错误。。。?数据未显示到dataGridView1