2 回答
TA贡献1775条经验 获得超8个赞
首先要知道哪个方法抛出异常。
在您的情况下,CopyToDatabase 方法将抛出此异常,如下所述:
无效操作异常
源序列不包含任何 DataRow 对象。
为了确保这一点,您可以拆分您的请求:
var designEnum= Designs.AsEnumerable();
var firstSelect = designEnum.Where(row => values.Contains(row.Field<Guid>("DesignGroupId"));
var secondSelect = firstSelect.Where(row => row.Field<int>("DesignKey") == null);
if (secondSelect.Count == 0)
{
//Handle the fact that you have no data
design = null;
}
else
{
designs = secondSelect.CopyToDataTable();
}
而且这更容易调试,因为您可以使用调试器逐行进行调试。您可以稍后压缩代码。
TA贡献1821条经验 获得超6个赞
你不能 CopyToDataTable null
这对你有用:
void Main()
{
DataTable Designs = new DataTable();
Designs.Columns.Add("DesignGroupId", typeof(Guid));
Designs.Rows.Add(Guid.NewGuid());
Designs.Rows.Add(Guid.NewGuid());
Designs.Rows.Add(Guid.NewGuid());
Designs.Rows.Add(Guid.Parse("7c176832-593c-402f-9def-fbe12da3742f"));
List<Guid> values = new List<Guid>();
values.Add(Guid.NewGuid());
values.Add(Guid.NewGuid());
values.Add(Guid.NewGuid());
//values.Add(Guid.Parse("7c176832-593c-402f-9def-fbe12da3742f"));
var res = Designs.AsEnumerable().Where(row => values.Contains(row.Field<Guid>("DesignGroupId"))).ToList();
if (res.Count > 0 )
Designs = res.CopyToDataTable();
else
Designs.Clear();
}
- 2 回答
- 0 关注
- 108 浏览
添加回答
举报